我必须将数组中的一些元素添加到项目的另一个数组中。
这是交易:我有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;
}
}
}
答案 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
)
)