配列の要素で関数を繰り返し実行する
array_walk()は各要素を引数にして指定の関数を繰り返し実行します。
これはforeach文の配列から値を取り出して繰り返すのと似ています。
実行後、次の要素を取り出し、その要素を引数として再び$callBack関数で実行します。
この操作は配列の要素の数だけ繰り返します。
※引数で渡された配列$arrayの値を直接書き換える
$userdataはオプションですが、$callBack関数の第3引数として渡すことができる値です。
戻り値の$resultはarray_walk()の処理が成功した時true、失敗した時falseが返る
これはforeach文の配列から値を取り出して繰り返すのと似ています。
各要素を引数にして関数を繰り返し実行する
$result = array_walk(&$array,$callBack,$userdata);
$arrayの配列から1つ要素を取り出し、それを引数として$callBackで指定した関数を実行します。$result = array_walk(&$array,$callBack,$userdata);
実行後、次の要素を取り出し、その要素を引数として再び$callBack関数で実行します。
この操作は配列の要素の数だけ繰り返します。
※引数で渡された配列$arrayの値を直接書き換える
$userdataはオプションですが、$callBack関数の第3引数として渡すことができる値です。
戻り値の$resultはarray_walk()の処理が成功した時true、失敗した時falseが返る
コールバック関数
function 関数名($value,$key,$userdata) {
処理文
}
array_walk(&[キー1 => 値1,...],myFunc,引数);
function myFunc($value,$key,$userdata) {
処理文
}
function 関数名($value,$key,$userdata) {
処理文
}
array_walk(&[キー1 => 値1,...],myFunc,引数);
function myFunc($value,$key,$userdata) {
処理文
}
配列の値をドル換算してリスト表示する
- $43.91
- $263.48
- $2107.85
<?php
function exchabgeList($value, $key, $rateData) {
$rate = $rateData["rate"];
if ($rate == 0) {
return;
}
$price = $value / $rate;
$exPrice = sprintf('%.02f', $price); //下2桁まで表示する書式
echo "<li>", $rateData["symbol"], $exPrice, "</li>"; //<li>タグと通貨シンボルをつける
}
$priceList = [5000, 30000, 240000];
$dollaryen = ["symbol" => "$", "rate" => 113.86];
echo "<ul>";
array_walk($priceList, "exchabgeList", $dollaryen);
echo "</ul>";
?>
配列の要素全てに同じ関数を適用する
配列の個々の値でコールバック関数を実行する
$result = array_map($callBack,$array);
array_map()には2つの使い方があります。1つは指定した配列の要素にコールバック関数を適用したいときです。$result = array_map($callBack,$array);
※引数で与えた配列を直接書き換えるのではなく、コールバック関数で処理した配列が$resultに入ります。
コールバック関数
function 関数名($value) {
処理文
return 値
}
function 関数名($value) {
処理文
return 値
}
コールバック関数で2つの配列を合わせてリスト表示
- 10km==00:55:21
- 20km==01:45:33
- 30km==02:39:59
- 40km==03:26:18
- Goal==03:48:06
<?php
function listUp($value1,$value2) {
echo "<li>",$value1,"==",$value2,"</li>","\n";
}
$point = ["10km","20km","30km","40km","Goal"];
$split = ["00:55:21","01:45:33","02:39:59","03:26:18","03:48:06",];
echo "<ul>","\n";
array_map("listUp",$point,$split);
echo "</ul>";
?>