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

在PHP中重置/删除数组中的所有值,php,arrays,Php,Arrays,我有一个数组\u翻转数组,看起来像: { "a" => 0, "b" => 1, "c" => 2 } 是否有一个我可以使用的标准函数,使其看起来像(所有值都设置为0?): 我尝试使用foreach循环,但如果我从其他编程语言中正确地记住了这一点,那么就不能通过foreach循环更改数组的值 foreach( $poll_options as $k => $v ) $v = 0; // doesn't seem to work... tl;dr:如何将数组的所有值

我有一个数组\u翻转数组,看起来像:

{ "a" => 0, "b" => 1, "c" => 2 }
是否有一个我可以使用的标准函数,使其看起来像(所有值都设置为0?):

我尝试使用foreach循环,但如果我从其他编程语言中正确地记住了这一点,那么就不能通过foreach循环更改数组的值

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

tl;dr:如何将数组的所有值设置为0?是否有一个标准函数来执行此操作?

您可以使用
foreach
重置值

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

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

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

此外,理想情况下,在使用foreach时,您不应该更改数组的结构,但是更改值并没有什么坏处。

您必须使用一个符号和

foreach( $poll_options as &$v)
  $v = 0;
或者只使用for循环。

您可以试试这个

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

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


从PHP 5.3开始,您可以使用lambda函数,因此这里有一个函数解决方案:

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

这是最简单的手动方式。

数组填充键功能是我清除数组最简单的功能。就像

array_fill_keys(array_keys($array), "")


foreach
可能会降低您的性能,以确定哪一种是您的实际需要。

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

  • 抄袭
  • 参考文献
  • 在引用赋值中,(
    $a=&$b
    ),$a和$b都引用相同的内容。()

    因此,如果要在对数组执行
    foreach
    操作的同时更改数组,有两种方法:

    1-制作阵列的副本: 2-通过引用:
    这不是通过引用为每个人编写的
    foreach
    。符号进入
    $v
    (键是冗余的)。array_fill()需要3个参数,第一个参数需要作为起始索引。除此之外,这是一个不错的解决方案。您的
    foreach
    不起作用,因为
    $v
    是当前值的副本,而不是对它的引用。
    $array = array_map(function($v){ return 0; }, $array);
    
    array_combine(array_keys($array), array_fill(0, count($array), 0))
    
    array_fill_keys(array_keys($array), "")
    
    array_fill_keys(array_keys($array), whatever you want to do)
    
    foreach($array as $key=>$value){
            $array[$key] = 0 ; // reassign the array's value
    }
    
    foreach($array as $key => &$value){
            $value = 0 ;
    }