連想配列において特定のindexのみを抜き出して(加工したりして)配列にする処理
<?php // 元になる配列 $data = array( array('id' => 1, 'name' => 'Bob', 'position' => 'Clerk'), array('id' => 2, 'name' => 'Alan', 'position' => 'Manager'), array('id' => 3, 'name' => 'James', 'position' => 'Director', 'hoge' => 'hogeeeeee') ); // array_map()を使って、index=hogeを抽出/加工。 参考: https://www.php.net/manual/ja/function.array-map.php $names = array_map( function($person) { // 'hoge'を持たないものは無視 if (!empty($person['hoge'])){ return ['NAME' => ">>>" . $person['hoge']]; } }, $data ); print_r($names); // --- *1 // コールバック関数を使用して、空配列を除去する処理 $function = function($element) use ($names) { if (!empty($element)) { return $element; } }; // array_filter()にコールバック関数として先の関数を指定する 参考: https://www.php.net/manual/ja/function.array-filter.php // array_values()がindexを振り直してくれる 参考: https://www.php.net/manual/ja/function.array-values.php $result = array_values(array_filter($names, $function)); print_r($result); // --- *2
*1 -- ただ抽出/加工したもの。空のコンテンツができてしまう。
Array ( [0] => [1] => [2] => Array ( [NAME] => >>>hogeeeeee ) )
*2 -- indexが整い、目的のものが取り出される。indexの振り直しを行わなかった場合は[2] => Array....という感じになる
Array ( [0] => Array ( [NAME] => >>>hogeeeeee ) )