記事の内容
array_filterを使って配列の中身をフィルターして、取得する方法を紹介します。
Rubyで言うと、selectやfind_allに近い動作です。
PHPのバージョンは、8系です。
配列の中にある文字列でフィルター
配列の中にある「age」が30より大きいものだけを取得したいとします。
foreachを使って書いてもいいのですが、array_filterを使うことで、わかりやすくて簡単なコードを書くことができます。
<?php | |
$arr = [array('name' => 'Taro_1', 'age' => 20, 'height' => 180, 'weight' => 60, 'country' => 'Japan'), | |
array('name' => 'Taro_2', 'age' => 30, 'height' => 170, 'weight' => 65 ), | |
array('name' => 'Taro_3', 'age' => 40, 'height' => 160, 'weight' => 70, 'country' => 'Taiwan'), | |
array('name' => 'Taro_4', 'age' => 50, 'height' => 150, 'weight' => 75, 'country' => 'Japan' )]; | |
// array_filterを使うと、簡単に書けます | |
// You can write a code simply using array_filter | |
print_r(array_filter($arr, fn($v) => $v['age'] > 30)); | |
$res = array(); | |
foreach ($arr as $v) { | |
if($v['age'] > 30){ | |
array_push($res, $v); | |
} | |
} | |
print_r($res); |