以下の例で、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);
これにより、配列がウォークされ、各要素がその場所への参照として変更されます(これが&$ widthの意味です)。
'&'がないと、このforeachループはCPUサイクルを噛む以外に何もしません。