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.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サイクルを噛む以外に何もしません。

于 2012-08-25T05:26:05.580 に答える