array_walk 在修改值时未按预期工作

我正在尝试向数组添加一个新值(我知道这是可能的,array_map()但我想用 来测试它array_walk())。


这是代码:


$array = [

    [

        'id'   => 1,

        'name' => 'Jesus',

    ],

    [

        'id'   => 2,

        'name' => 'David',

    ],

];

我想要这个输出:


$array = [

    [

        'id'     => 1,

        'name'   => 'Jesus',

        'locked' => 0,

    ],

    [

        'id'     => 2,

        'name'   => 'David',

        'locked' => 0,

    ],

];

我尝试使用以下代码:


array_walk($array, static function(array $item): array {

    $item += ['locked' => 0];

    //var_dump($item); // Here the array has the three values.

    return $item;

});


// Also I tried the same code but not returning the array, I mean:


array_walk($array, static function(array $item): void {

    $item += ['locked' => 0];

    //var_dump($item); // Here the array has the three values.

});


有可能我想要什么吗array_walk()?


那将是一个解决方案array_map()。


$arrayMapped = array_map(static function(array $item): array {

    return $item += ['locked' => 0];

}, $array);


var_dump($arrayMapped);

干杯!


蝴蝶不菲
浏览 63回答 1
1回答

互换的青春

数组按值传递。您需要使用引用来定义参数&array_walk($array, function(array &$item): void {     $item['locked'] = 0; });
打开App,查看更多内容
随时随地看视频慕课网APP