使用旧数组中的值重新填充新数组-php
你好,Stack Overflow社区 我试图用新排序的array2更新array1中的值,并将最终的数组输出为array2。几天来我一直想弄明白这一点,但似乎无法理解。你很可能知道,我是php新手。有人能帮我吗 以下是两个数组—“array1”位于第一位,“array2”位于第二位:使用旧数组中的值重新填充新数组-php,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,你好,Stack Overflow社区 我试图用新排序的array2更新array1中的值,并将最终的数组输出为array2。几天来我一直想弄明白这一点,但似乎无法理解。你很可能知道,我是php新手。有人能帮我吗 以下是两个数组—“array1”位于第一位,“array2”位于第二位: Array ( [0] => Array ( [id] => bbb [hammer] => $1,000
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”的原始“hammer”值为222美元,以此类推,其他“id”:
Array
(
[0] => Array
(
[id] => aaa
[hammer] => $1,000
)
[1] => Array
(
[id] => bbb
[hammer] => $678
)
[2] => Array
(
[id] => ccc
[hammer] => $222
)
)
谁能告诉我我做错了什么 在第二个循环中更改
$key
和$val
的名称。它们相互覆盖。不要在内部foreach循环中使用$key。您需要array2的密钥。还有此选项,代码要少得多:
$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>';
$items[0]=数组('id'=>'bbb','hammer'=>'1000');
$items[1]=数组('id'=>'ccc','hammer'=>'$678');
$items[2]=数组('id'=>'aaa','hammer'=>'$222');
功能cmp($a$b){
返回strcmp($a['id',$b['id');
}
回声';
var_dump(项目);
usort(项目“cmp”);
var_dump(项目);
回声';
您是否可以发布一个您想要的结果示例?如果我理解的很好,您所要做的就是根据array2的ID订单对array1进行排序??谢谢您的帮助。这是我在完成痛苦的php入门级体验之前遇到的最后一个问题。除了这个社区,没有其他人可以问,我感到很幸运。你的答案很完美。我现在更加意识到注意变量命名的重要性。不客气。如果有帮助,请接受答案。