我有一个我想改变的数组。我认为array_walk是可行的方法,但我无法弄清楚如何从array_walk
收集数据,从旧数组中删除数据,以及插入新数据。我该怎么做呢?这是代码。
$width_array = array(
"2.5%",
"2.6%",
"2.7%",
"2.8%",
);
function adjust_the_width($value)
{
$value = $value * 2;
}
array_walk($width_array, "adjust_the_width");
$ random_width = array_rand($ width_array,10);
答案 0 :(得分:2)
你可能在哪里寻找array_map,例如:
<?
$width_array = array(
"2.5%",
"2.6%",
"2.7%",
"2.8%",
);
function adjust_the_width($value) {
return $value * 2;
}
$width_array = array_map("adjust_the_width", $width_array);
$random_width = array_rand($width_array, count($width_array));
var_dump($width_array);
注意:百分比从计算中删除,因为PHP将字符串“2.5%”解释为浮点值,当它乘以2时。
此外,array_map将每个元素作为参数提供给所提供的函数,并使用它的返回值填充array_map构建的新数组中的相同位置。
这也是我分配$width_array = array_map(...
,array_map构建新数组的原因,默认情况下它不会替换旧数组。
如果您不想构建中间数组,也可以这样做:
foreach($width_array as &$width) {
$width = $width * 2;
}
var_dump($width_array);
它遍历数组并修改每个元素作为对它的位置的引用(这就是&amp; $ width的意思)。
没有'&amp;'这个foreach循环只会咀嚼cpu循环。