在另一个数组的末尾添加一个数组

时间:2013-12-31 10:47:54

标签: php arrays

我必须将数组中的一些元素添加到项目的另一个数组中。

这是交易:我有2个数组,来自数据库的2个表,名为$stand$signal

$stand由数组组成:

$stand = [[id, name, width, length,...], [id, name, width, length,...], ...]

$signal也由数组组成:

$signal = [[id, num, name, adress, ...], [id, num, name, adress, ...], ...]

$stand的每个条目都与$signal条目匹配:$stand条目的ID等于$signal中的元素数。

对于这些条目,我想在$signal条目末尾添加$stand条目的内容。

这是我使用的代码,但不幸的是它不起作用:

foreach ($stand as $st) {
   foreach ($signal as $sig) {
      if ($st[0] == $sig[1]) {
         $st[]=$sig;
      }
   }
}

5 个答案:

答案 0 :(得分:9)

array_merge是一种优雅的方式:

$a = array('a', 'b');
$b = array('c', 'd');
$merge = array_merge($a, $b); 
// $merge is now equals to array('a','b','c','d');

做类似的事情:

$merge = $a + $b;
// $merge now equals array('a','b')

无效,因为+运算符实际上并没有合并它们。如果$ a与$ b具有相同的密钥,它将无法执行任何操作。

答案 1 :(得分:2)

使用array_merge函数。

$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);

详细信息read here

答案 2 :(得分:1)

foreach ($stand as $key => $st) {
   foreach ($signal as $sig) {
      if ($st[0] == $sig[1]) {
         $stand[$key][]=$sig;
      }
   }
}

答案 3 :(得分:0)

$ st似乎是元素数组的副本,但不是元素引用。因此,您对$ st的修改将丢失。 因此,您应该在$ st之前加上&符号以将其用作参考:

foreach($stand as &$st)

答案 4 :(得分:0)

据我了解,你想要这样的东西

$array1 = array(array('id'=>1,'name'=>'manish'),array('id'=>2,'name'=>'bhuvnesh'));

$array2 = array(array('id'=>1,'color'=>'red'),array('id'=>2,'color'=>'green'));

$newArray = array();

foreach($array1 as $key => $vals) {
    $id = $vals['id'];
    $color = $array2[$key]['color'];
    $newArray[] = array('id'=>$id, 'name'=>$vals['name'], 'color'=>$color);
}

echo '<pre>';
print_r($newArray);

这将返回

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => manish
            [color] => red
        )

    [1] => Array
        (
            [id] => 2
            [name] => bhuvnesh
            [color] => green
        )

)