はじめに
配列関数の整理。3回目。
usort
標準的なソート関数では表現できない順序に基づいてソートする
usort.php
$keys = ['十', '百', '千', '万', '億', '兆', '京', '垓', '秭', '穣', '溝',
'澗', '正', '載', '極', '恒河沙', '阿僧祇', '那由他', '不可思議', '無量大数' ];
$data = ['那由他', '京', '垓', '億', '無量大数' ];
usort($data, function($a, $b) use ($keys) {
return array_search($a, $keys) <=> array_search($b, $keys);
}); // ['億', '京', '垓', '無量大数', '那由他']
array_walk
配列から順に要素を取得&処理する
array_walk.php
$data = ['高江' => '男', '掛谷' => '女', '日尾' => '男', '薄井' => '女', '和田' => '男'];
array_walk($data,
function ($value, $key, $suffix) {
print "{$key}:{$value}{$suffix}";
}, '<br />'
);
// 高江:男<br />掛谷:女<br />日尾:男<br />薄井:女<br />和田:男<br />
元の配列の内容を変更する
array_walk_ref.php
$data = ['高江', '掛谷', '日尾', '薄井', '和田'];
array_walk($data,
function (&$value) {
$value = "New{$value}";
}
);
print_r($data); // ['New高江', 'New掛谷', 'New日尾', 'New薄井', 'New和田']
array_walk_recursive
入れ子の配列を再帰的に処理する
array_walk_recursive.php
$sum = 0;
$count = 0;
$data = [5, 1, [10, -3]];
array_walk_recursive($data,
function ($value) use(&$sum, &$count){
$sum += $value;
$count++;
}
);
$average = $sum / $count;
print "要素の個数: {$count}"; // 4
print "合計値: {$sum}"; // 13
print "平均値: {$average}"; // 3.25