我正在尝试将数组中的键和值(关联)添加到另一个数组,其中一个特定的键和值匹配。以下是两个数组:
$array1 = array(
1 => array(
'walgreens' => 'location',
'apples' => 'product1',
'oranges' => 'product2'
),
2 => array(
'walmart' => 'location',
'apples' => 'product1',
'oranges' => 'product2',
'milk' => 'product3'
)
);
$array2 = array(
1 => array(
'walgreens' => 'location',
'apples' => 'product1',
'oranges' => 'product2',
'bananas' => 'product3',
)
);
以下是我修改$array1
以获得关键'香蕉'和价值'product3'的尝试:
$dataCJ = getCJItem($isbn);
foreach ($array1 as $subKey => $subArray) {
foreach($subArray as $dkey => $dval){
foreach($array2 as $cjk => $cjv){
foreach($cjv as $cjkey => $cjval){
if($dval['walgreens'] == $cjval['walgreens']){
$dval['bananas'] = $cjval['bananas'];
}
}
}
}
}
这不起作用。我该如何解决这个问题?
答案 0 :(得分:3)
将=> $dval
更改为=> &$dval
。目前,您正在创建和写入新变量,并且更新将无法就地生效。
答案 1 :(得分:2)
我会看array_merge()
函数!
对于您的具体情况,您可以执行以下操作:
foreach($array1 as $key1 => $values1){
foreach($array2 as $key2 => $values2){
if($values1[0] == $values2[0]){
$array1[$key1] = array_merge($values1, $values2);
}
}
}
请注意,要简化问题,您应该反转第一个键=>数组的值对。
以这种方式拥有一个数组会很简单:
array(
'location' => "The location (eg:walgreens)",
//...
);
这样您可以将比较更改为以下内容:
$values1['location'] == $values2['location']
如果数组不是以第一对的位置构建的,那么哪个更安全。