【问题标题】:combining single and multidimensional array in php在php中结合单维和多维数组
【发布时间】:2017-01-26 07:36:10
【问题描述】:

一维数组

$arr1 = array(3) {
  ["Gold"]=> "170"
  ["Diamond"]=> "301"
  ["Platinum"]=>  "302"
}

多维数组

$arr2 = array(3) {

  [0]=>
  array(2) {
    ["ID"]=> "p103"
    ["PID"]=> "301"
  }

  [1]=>
  array(2) {
    ["ID"]=> "p104"
    ["PID"]=> "302"
  }

  [2]=>
  array(2) {
    ["ID"]=> "p105"
    ["PID"]=> "300"
  } 
}

而且相交可以是,

array(2) {

  [0]=>
  array(2) {
    ["ID"]=> "301"
    ["PID"]=> "Diamond"
  }

  [1]=>
  array(2) {
    ["ID"]=> "302"
    ["PID"]=> "Platinum"
  }
}

我曾尝试使用 php array_intersect()$Data = array_intersect_assoc($arr1,$arr2); 但有些东西不见了。 任何建议和帮助都将不胜感激。谢谢

【问题讨论】:

  • 我们可以看看你对array_intersect()的尝试吗?
  • @halfer 请查看已编辑的问题。

标签: php arrays multidimensional-array associative-array array-intersect


【解决方案1】:

您可以简单地循环并为 PID 字段分配适当的值。

$array1 = array(
   "Gold" => "170",
   "Diamond" => "301",
   "Platinum" => "302"
 );

 $array2 = array(
   array(
    "ID" => "p103",
    "PID" => "301"
   ),
   array(
    "ID" => "p104",
    "PID" => "302"
  ),
  array(
    "ID" => "p105",
    "PID" => "300"
  )
);

$array1 = array_flip($array1);  // Flipping first array so that we can directly use the values Gold, Diamond corresponding to 301, 301 ...

foreach ($array2 as $k => &$arr) {
   /* 
    * If value exists in array 1 then assign it to PID 
    * Otherwise, unset this array key
    */
   if (isset($array1[$arr['PID']])) {
       $arr['PID'] = $array1[$arr['PID']];  
   } else {
       unset($array2[$k]);
   }
}

【讨论】:

  • 完美运行,谢谢,如何掌握数组?
  • 您只需要坚持循环等基础知识并构建您的概念。还要熟悉基本的数组函数。
  • 为什么&在&$arr?。请解释
  • 由于我们要覆盖$arr['PID'],我们需要使用这个&,即引用。如果我们不使用&,这些值就不会被覆盖。
  • 为什么函数array_intersect_assocarray_intersect 不适用于这个问题?
猜你喜欢
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多