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

Kev*_*ans 10 php arrays

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

{ "a" => 0, "b" => 1, "c" => 2 }
Run Code Online (Sandbox Code Playgroud)

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

{ "a" => 0, "b" => 0, "c" => 0 }
Run Code Online (Sandbox Code Playgroud)

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

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

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

dec*_*eze 24

$array = array_fill_keys(array_keys($array), 0);
Run Code Online (Sandbox Code Playgroud)

要么

array_walk($array, create_function('&$a', '$a = 0;'));
Run Code Online (Sandbox Code Playgroud)

  • +1第一个片段是我想不到的功能解决方案...... (4认同)

Mic*_*yen 7

您可以使用a foreach来重置值;

foreach($poll_options as $k => $v) {
  $poll_options[$k] = 0;
}
Run Code Online (Sandbox Code Playgroud)


Fat*_*ana 6

array_fill_keys函数是最容易清除数组的函数.只是使用喜欢

array_fill_keys(array_keys($array), "")
Run Code Online (Sandbox Code Playgroud)

要么

array_fill_keys(array_keys($array), whatever you want to do)
Run Code Online (Sandbox Code Playgroud)

foreach 可能会导致您的表现下降,以确保您的实际需要.


sha*_*mar 5

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

foreach( $poll_options as $k => $v )
    $poll_options[$k] = 0;
Run Code Online (Sandbox Code Playgroud)

此外,理想情况下,您在使用时不应该更改数组的结构foreach,但更改值不会有害.