0

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

4

1 回答 1

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 时将字符串“2.5%”解释为浮点值。

此外,array_map 将每个元素作为参数提供给所提供的函数,并使用它的返回值填充 array_map 构建的新数组中的相同位置。

这也是我赋值的原因$width_array = array_map(...,array_map 构建了一个新数组,默认不会替换旧数组。

如果您不想构建中间数组,也可以这样做:

foreach($width_array as &$width) {
    $width = $width * 2;
}

var_dump($width_array);

这会遍历数组并将每个元素修改为对其位置的引用(这就是 &$width 的含义)。

如果没有 '&',这个 foreach 循环只会咀嚼 cpu 循环。

于 2012-08-25T05:26:05.580 回答