🔥

php array_filter, array_values

2021/04/07に公開

はじめに

phpで使ったメソッドまとめていきます。

array_filter

  • 配列要素をフィルタリンします。
  • callback関数を呼び出して、処理を行います。
  • フィルタリング後のインデックスは振り直されないです。

array_filter 公式ドキュメント

array_filter( 配列, callback関数) {
    return 処理;
}

配列から特定のものを取り出す

お菓子という多次元配列のなかに、
配列のキーを「商品情報」と「商品価格」とした連想配列を作成してみました。

$お菓子 = [
    ['商品情報' => 'オレオ', '商品価格' => 100],
    ['商品情報' => 'じゃがりこ', '商品価格' => 200],
    ['商品情報' => 'ポテチ', '商品価格' => 120],
    ['商品情報' => 'ポッキー', '商品価格' => 180],
    ['商品情報' => 'ラムネ', '商品価格' => 50],
];

// 商品価格が150以下のものを購入に代入
$購入 = array_filter($お菓子, function($カゴ){
    return $カゴ['商品価格'] < 150;
});
var_dump($購入);

// array(3) {
//   [0]=>
//   array(2) {
//     ["商品情報"]=>
//     string(9) "オレオ"
//     ["商品価格"]=>
//     int(100)
//   }
//   [2]=>
//   array(2) {
//     ["商品情報"]=>
//     string(9) "ポテチ"
//     ["商品価格"]=>
//     int(120)
//   }
//   [4]=>
//   array(2) {
//     ["商品情報"]=>
//     string(9) "ラムネ"
//     ["商品価格"]=>
//     int(50)
//   }
// }

array_values

  • 配列のindexが順番通りに並んでないのでarray_valuesを使用
  • indexを順番通りにする

array_values 公式ドキュメント

array_values(配列);
$購入 = array_values($購入);
var_dump($購入);

// array(3) {
//   [0]=>
//   array(2) {
//     ["商品情報"]=>
//     string(9) "オレオ"
//     ["商品価格"]=>
//     int(100)
//   }
//   [1]=>
//   array(2) {
//     ["商品情報"]=>
//     string(9) "ポテチ"
//     ["商品価格"]=>
//     int(120)
//   }
//   [2]=>
//   array(2) {
//     ["商品情報"]=>
//     string(9) "ラムネ"
//     ["商品価格"]=>
//     int(50)
//   }
// }

参照

array_filterのコールバック関数を使用する

Discussion