使用Array Walk更改数组

时间:2012-08-25 05:06:48

标签: php arrays

我有一个我想改变的数组。我认为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);

1 个答案:

答案 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循环。