[英]PHP foreach reset and remove/subtract array values if condition is true
[英]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中的变量赋值有两种类型,
在参考作业中,( $a = &$b
),$ a和$ b都指的是相同的内容。 ( 阅读手册 )
所以,如果你想改变thesame数组时,你做foreach
就可以了,有两种方法:
foreach($array as $key=>$value){
$array[$key] = 0 ; // reassign the array's value
}
foreach($array as $key => &$value){
$value = 0 ;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.