我一直在研究一些考题。关于数组迭代的一个问题。
遍历$myarray数组的最佳方法是什么您想要修改每个元素的值吗?
<?php $myarray = array ("My String", "Another String", "Hi, Mom!"); ?>
。使用for循环
B。使用foreach循环
C。使用while循环
D。使用do…while循环
E。没有办法实现这个目标
我的回答是"当然是foreach循环"。但是根据答题纸:
我仍然认为每一个都是最好的。只要我使用key,我就可以修改值通常,foreach语句是最合适的构造遍历数组。然而,因为我们被要求这么做修改数组中的每个元素,此选项不可用,因为Foreach操作数组的副本,因此会得到增加了开销。虽然while循环或do…while循环可以工作,因为数组是按顺序索引的,所以最好使用for语句适合任务,使答案A正确。
<?php
foreach($myarray as $k=>$v){
$myarray[$k] = "Modified ".$v;
}
?>
我错过什么了吗?
根据答题纸:
这个选项不可用,因为foreach操作的是数组的副本,因此会导致额外的开销
无稽之谈。
如果需要证明,可以通过引用取值:
<?php
foreach($myarray as &$v){
$v = "Modified ".$v;
}
?>
我仍然认为每一个都是最好的。只要我使用它与键,我可以修改值。
我同意。
号我错过什么了吗?
http://php.net/manual/en/function.array-walk.php
array_walk($myarray, "modify");
function modify($value)
{
$value = "modified " . $value;
}
如果你想将此应用于多个数组,你甚至可以使用array_map()
你也可以做
<?php
foreach($myarray as &$v){
$v = "Modified ".$v;
}
?>
或者在某些情况下,如果您有一个功能足以完成任务:
$myarray = array_map( "trim", $myarray );
它将对数组中的每个元素应用trim函数,并返回修改后的版本