使用旧数组中的值重新填充新数组-php

使用旧数组中的值重新填充新数组-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

你好,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”的原始“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入门级体验之前遇到的最后一个问题。除了这个社区,没有其他人可以问,我感到很幸运。你的答案很完美。我现在更加意识到注意变量命名的重要性。不客气。如果有帮助,请接受答案。