在php上组合两个数组

时间:2015-06-01 12:04:19

标签: php arrays

您好我正在尝试合并两个php数组。

第一个

array (size=13)
  0 => 
    object(stdClass)[30]
      public 'ID' => string '1' (length=1)
      public 'name' => string 'html5' (length=5)
      public 'img' => string 'HTML5.png' (length=9)
  1 => 
    object(stdClass)[31]
      public 'ID' => string '2' (length=1)
      public 'name' => string 'css3' (length=4)
      public 'img' => string 'css.png' (length=7)
  2 => 
    object(stdClass)[32]
      public 'ID' => string '3' (length=1)
      public 'name' => string 'php' (length=3)
      public 'img' => string 'php1.png' (length=8)
  3 => 
    object(stdClass)[33]
      public 'ID' => string '4' (length=1)
      public 'name' => string 'java script' (length=11)
      public 'img' => string 'javascript.png' (length=14)

第二个

array (size=3)
  0 => 
    object(stdClass)[26]
      public 'ID' => string '1' (length=1)
      public 'IDuser' => string '1' (length=1)
      public 'IDskill' => string '1' (length=1)
  1 => 
    object(stdClass)[27]
      public 'ID' => string '2' (length=1)
      public 'IDuser' => string '1' (length=1)
      public 'IDskill' => string '3' (length=1)
  2 => 
    object(stdClass)[28]
      public 'ID' => string '3' (length=1)
      public 'IDuser' => string '1' (length=1)
      public 'IDskill' => string '4' (length=1)  

第一个数组的ID等于第二个数组的IDskill。如果IDskill和ID相同,我正在尝试组合创建新数组,在新数组中使用类似的东西

          public 'ID' => string '1' (length=1)
          public 'name' => string 'html5' (length=5)
          public 'img' => string 'HTML5.png' (length=9)
   ===>New field  public 'MATCH' => string '1' (length=9)

4 个答案:

答案 0 :(得分:0)

试试这个(其中a1是第一个数组,a2是第二个数组,$result是最终合并数组):

$result = array();
$n=0;
foreach($a1 as $k=>$v) {
    if (isset($v->ID) && isset($a2[$n]->ID) && $v->ID==$a2[$n]->ID) {
        $result[$n]=$v;
        $result[$n]->MATCH=1;
    }
    $n++;
}
print_r($result);

答案 1 :(得分:0)

使用array_merge()函数



<?php
$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));
?>
&#13;
&#13;
&#13;

&#13;
&#13;
<?php
$fname=array("Peter","Ben","Joe");
$age=array("35","37","43");

$c=array_combine($fname,$age);
print_r($c);
?>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以使用How to Extract Default Control Template In Visual Studio?array_map

$IDs

如果您不想使用这两个第一个匿名函数或者不想创建use(&$IDs)数组,则可以将use(&$second_array)替换为$match_element->MATCH = in_array($match_element->ID, $IDs); 行:

$second_array

用于循环遍历IDskill元素的循环,以检查其中是否有任何元素$match_element->ID等于IDskill

此外,如果数组中的所有元素具有相同的属性,则可能不需要检查ID<products>是否存在。

答案 3 :(得分:0)

让我加上我的两分钱,如何从第二个

中的第一个数组中找到元素匹配ID
   $tmp = array_filter($array2, function($ar2) use ($ID) { return $ar2->IDskill === $ID; });
   if ($tmp) // Found
   else // Not found

所有代码可能都是

result = array()
    foreach ($array1 as $item) {
        $ID = $item->ID;
        $tmp = array_filter($array2, function($ar2) use ($ID) { return $ar2->IDskill === $ID; });
        if ($tmp)  { // Found
            $tmp = $item;
            $tmp->MATCH = 1;
            result[]  = $tmp;
        }
    }