array_map
総額の計算・整形
単価と個数から総額を計算し整形して返す。
//単価と個数を配列で受け取り、総額を計算する。
//単価、個数、総額の数値は整形して返す。
function map($x, $y){
return array(number_format($x),
number_format($y),
number_format($x * $y));
}
$a = array(980, 1980, 480); // 単価
$b = array(90, 70, 1200); // 個数
$c = array_map("map", $a, $b);
foreach ($c as $value) {
printf("%5s円 x %5s個 = %7s円\n", $value[0], $value[1], $value[2]);
}
配列値の調整
点数の最高点を100点に調整して、名前と点数の配列にする。
$array1 = array("田中", "鈴木", "斉藤");
$array2 = array(70, 60, 200);
$aray_result = array_map("adjust", $array1, $array2);
function adjust($name, $num) {
return array($name, min(100, $num));
}
入力データの一括処理
array_result = array_map("conv", $_POST;
function conv($item) {
(配列値の加工処理:タグの削除、エスケープの解除など)
return $item;
}
次元配列
関数名にNULLを指定すると複数の配列を一つの多次元配列として返す。
$a = array(1, 2, 3);
$b = array("a", "b", "c");
$c = array_map(NULL, $a, $b);
// $c[0][0] = 1
// $c[0][1] = "a"
// $c[1][0] = 2
// $c[1][1] = "b"
// $c[2][0] = 3
// $c[2][1] = "c"
array_filter
123」で始まる番号を抽出する。
function filter($x) {
return preg_match("/^123\-/", $x);
}
$a = array("123-4567", "111-2222", "321-9999", "123-5555", "123-9876");
$b = array_filter($a, "filter");
foreach ($b as $value) {
echo $value . "
";
}
array_reduce
各要素の値を千倍して集計
function reduce($x, $y) {
$x += ($y * 1000);
return $x;
}
$a = array(9.5, 7.2, 3.7, 6.8, 5.4);
$b = array_reduce($a, "reduce", 0);
echo $b;
array_walk
百分率で表示。
function walk($x, $y, $z) {
printf("%d : %2d%%\n", $y, round($x / $z * 100));
}
function 関数名(引数1, 引数2) {
//二つの引数の値を比較するコード
return 0 または 1 または -1
}