0
0

配列関数・3回目

Posted at

はじめに

配列関数の整理。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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0