繁体   English   中英

在PHP中重置/删除数组中的所有值

[英]Reset/remove all values in an array in PHP

我有一个array_flipped数组,看起来像:

{ "a" => 0, "b" => 1, "c" => 2 }

是否有一个标准函数,我可以使用它看起来像(所有值都设置为0?):

{ "a" => 0, "b" => 0, "c" => 0 }

我尝试使用foreach循环,但如果我从其他编程语言中正确记得,你应该无法通过foreach循环更改数组的值。

foreach( $poll_options as $k => $v )
  $v = 0; // doesn't seem to work...

TL; dr:如何将数组的所有值设置为0? 有这样的标准功能吗?

$array = array_fill_keys(array_keys($array), 0);

要么

array_walk($array, create_function('&$a', '$a = 0;'));

您可以使用foreach重置值;

foreach($poll_options as $k => $v) {
  $poll_options[$k] = 0;
}

array_fill_keys函数对我来说是最容易清除数组的函数。 只是使用喜欢

array_fill_keys(array_keys($array), "")

要么

array_fill_keys(array_keys($array), whatever you want to do)

foreach可能会降低您的表现,以确保您的实际需要。

像这样运行你的循环,它将工作:

foreach( $poll_options as $k => $v )
    $poll_options[$k] = 0;

此外,理想情况下,在使用foreach ,您不应该能够更改数组的结构,但更改值不会造成任何损害。

你必须使用&符号......

foreach( $poll_options as &$v)
  $v = 0;

或者只使用for循环。

从PHP 5.3开始,你可以使用lambda函数,所以这是一个功能解决方案:

$array = array_map(function($v){ return 0; }, $array);

你可以试试这个

foreach( $poll_options as $k => &$v )
    $v = 0; 

$v地址

array_combine(array_keys($array), array_fill(0, count($array), 0))

这是最简单的手动方式。

PHP中的变量赋值有两种类型,

  1. 复制
  2. 参考

在参考作业中,( $a = &$b ),$ a和$ b都指的是相同的内容。 阅读手册

所以,如果你想改变thesame数组时,你做foreach就可以了,有两种方法:

1-制作数组的副本:

foreach($array as $key=>$value){
        $array[$key] = 0 ; // reassign the array's value
}

2 - 参考:

foreach($array as $key => &$value){
        $value = 0 ;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM