首页 > 解决方案 > 修改值时,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);

干杯!

标签: php

解决方案


数组是按值传递的。您需要通过引用使用来定义参数&

array_walk($array, function(array &$item): void {
    $item['locked'] = 0;
});

推荐阅读