Restoration
1/30/2017 - 12:58 PM

配列の中から条件に合うデータのを抜き出して配列を作成する方法

配列の中から条件に合うデータのを抜き出して配列を作成する方法

array_filter コールバック関数を使用して、配列の要素をフィルタリングする

##array_filter

  • 第一引数:対象となる配列
  • 第二引数:コールバック関数

PHP逆引きレシピよりコードを引用

function odd($value){
    if(! is_int($value)){
        return false;
    }
    return ($value % 2 == 1);
}
function even($value){
    if(! is_int($value)){
        return false;
    }
    return ($value % 2 == 0);
}

odd関数は引数の値をチェック、数値型かどうかを判別し、引数の値を2で割り、1余る値(奇数)を返します
even関数もoddと同じように処理をおこない、返り値が2で割って0になる数値
つまり偶数をかえす

//対象となる配列
$data = array('one'=>1,'two'=>2,'three'=>3,'four'=>'four');

//odd関数をarray_filterのコールバックとして使用
$odds = array_filter($data,'odd');
$evens = array_filter($data,'even');

var_dump($odds);
var_dump($evens);

結果

array(2) {
  ["one"]=>
  int(1)
  ["three"]=>
  int(3)
}
array(1) {
  ["two"]=>
  int(2)
}