在PHP中重置/删除数组中的所有值
我有一个数组\u翻转数组,看起来像:在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:如何将数组的所有值
{ "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 ;
}