テクニカル雑記帳です
連想配列において特定の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
)
)