2012-08-25 77 views
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);

回答

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); 

這走陣列和修改每個元素作爲參考,它的位置(這是& $寬度是指)。

沒有'&'這個foreach循環除了咀嚼cpu週期外什麼都不會做。

+0

感謝它的工作!我沿着foreach路線走。 – jason328