Hello Stack Overflow社区,
我正在尝试使用新排序的array2更新array1中的值,并将最终数组输出为array2。我一直想要解决这个问题几天,但似乎无法得到它。你很有可能告诉我我是php新手。任何人都可以帮助我吗?
以下是两个数组 - 'array1'是第一个,'array2'是:
Array (
[0] => Array
(
[id] => bbb
[hammer] => $1,000
)
[1] => Array
(
[id] => ccc
[hammer] => $678
)
[2] => Array
(
[id] => aaa
[hammer] => $222
)
) Array (
[0] => Array
(
[id] => aaa
[hammer] => GBP 135
)
[1] => Array
(
[id] => bbb
[hammer] => GBP 610
)
[2] => Array
(
[id] => ccc
[hammer] => GBP 413
)
)
现在我的代码尝试使用第一个数组中的'hammer'值更新第二个数组中新重新排序的'id'值。这是我的代码:
foreach($array2 as $key => $val) {
$a = $array2[$key]['id'];
$hammer_a = $array2[$key]['hammer'];
foreach($array1 as $key => $val) {
$b = $array1[$key]['id'];
if($a===$b){
$hammer_b = $array1[$key]['hammer'];
$array2[$key]['hammer'] = $hammer_b;
}
}
}
然而,正如此代码所示,我在下面留下了不希望的结果。我想'id''aaa'的原始'锤子'价值为222美元,等等其他'id':
Array
(
[0] => Array
(
[id] => aaa
[hammer] => $1,000
)
[1] => Array
(
[id] => bbb
[hammer] => $678
)
[2] => Array
(
[id] => ccc
[hammer] => $222
)
)
有谁能告诉我我做错了什么?
答案 0 :(得分:2)
在第二个循环中更改$key
和$val
的名称。他们互相压倒。
答案 1 :(得分:0)
不要在你的内部foreach循环中使用$ key。你想要array2的密钥。
答案 2 :(得分:0)
还有这个选项,代码少得多:
$items[0] = array('id'=>'bbb','hammer'=>'$1,000');
$items[1] = array('id'=>'ccc','hammer'=>'$678');
$items[2] = array('id'=>'aaa','hammer'=>'$222');
function cmp($a, $b) {
return strcmp($a['id'], $b['id']);
}
echo '<pre>';
var_dump($items);
usort($items, "cmp");
var_dump($items);
echo '</pre>';