配列の各要素に関数適用

PHPのシンタックス

  1. HOME
  2. 配列の要素に関数

配列の要素で関数を繰り返し実行する

array_walk()は各要素を引数にして指定の関数を繰り返し実行します。
これはforeach文の配列から値を取り出して繰り返すのと似ています。
各要素を引数にして関数を繰り返し実行する
$result = array_walk(&$array,$callBack,$userdata);
$arrayの配列から1つ要素を取り出し、それを引数として$callBackで指定した関数を実行します。
実行後、次の要素を取り出し、その要素を引数として再び$callBack関数で実行します。
この操作は配列の要素の数だけ繰り返します。
※引数で渡された配列$arrayの値を直接書き換える
$userdataはオプションですが、$callBack関数の第3引数として渡すことができる値です。
戻り値の$resultはarray_walk()の処理が成功した時true、失敗した時falseが返る
コールバック関数
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に入ります。
コールバック関数
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>";
?>