用0替换平坦数组中的所有值

4

是否有任何默认函数可以清除数组中仅值?

例如:

$array = [
    10,
    3,
    3,
    34,
    56,
    12
];

期望的结果:

[
    0,
    0,
    0,
    0,
    0,
    0
]
4个回答

8
$array = array_combine(array_keys($array), array_fill(0, count($array), 0));

替代方案:

$array = array_map(create_function('', 'return 0;'), $array);

3
回答你最初的问题:没有任何默认的PHP函数可以做到这一点。然而,你可以尝试其他人描述的某些组合函数。不过,我发现下面这段代码更易读:
$numbers = Array( "a" => "1", "b" => 2, "c" => 3 );

foreach ( $numbers as &$number ) {
    $number = 0;
}

1
$array = array_fill(0, count($array), 0);

这将创建一个与原始数组大小相同且填充了零的数组。


2
尽管原帖没有明确说明,但我认为键可能不是连续的数字。这个解决方案会破坏这些键。 - deceze
上面的代码适用于您的示例(非关联数组)。如果您想保留键,则deceze的解决方案是正确的。 - Victor Stanciu

0

您可以使用array_map()将所有值覆盖为0。这种方法保留了原始键。

代码:(演示

$zeros = array_map(fn() => 0, $array);

var_export($zeros);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接