2016-09-14 9 views
0

multifilterまたはmulticallbackを設定するにはどうすればよいですか?PHP array_filterマルチコールバック

フィルタデータをCityConfirmでまとめています。

入力データ:

$data1 = array(
      "L1" => array('Vanessa', 'Prague', 'OK'), 
      "L2" => array('Alex', 'Paris', 'OK'), 
      "L3" => array('Paul', 'Paris', 'OK'), 
      "L4" => array('John', 'Madrid', 'OK'), 
      "L5" => array('Jane', 'London', 'Waiting'), 
      "L6" => array('David', 'Prague', 'OK'), 
      "L7" => array('Martin', 'Prague', 'Waiting'), 
      "L8" => array('Frank', 'Prague', 'OK'), 
      "L9" => array('Joseph', 'Prague', 'Waiting'), 
      ); 

フィルターコード:

$ByConfirm = 'OK'; 
$ByCity = 'Prague'; 

以下は私の問題です。私はの協力を必要とする、私は&&を使用してみてください、それは個別に動作します$filterByConfirm + $filterByCity

$new = array_filter($data1, $filterByConfirm && $filterByCity); 

     $filterByConfirm = $new = array_filter($data1, function ($var) use ($ByConfirm) { 
      return ($var[2] == $ByConfirm); 
     }); 

     $filterByCity = $new = array_filter($data1, function ($var) use ($ByCity) { 
      return ($var[1] == $ByCity); 
     }); 

実際の結果:

Name City Confirm 
Vanessa Prague OK 
David Prague OK 
Martin Prague Waiting 
Frank Prague OK 
Joseph Prague Waiting 

私は必要があります。最後

Name City Confirm 
Vanessa Prague OK 
David Prague OK 
Frank Prague OK 
+0

データベースを使用して表形式のデータをフィルタリングすることを考慮したことはありますか? –

+0

もちろん、私は素人です。このソリューションは私の小さなプロジェクトには十分で、おそらく後で。 –

答えて

0

、ここソリューションです。 PHP 5.2: Filter array with multiple arguments performance

$arrayToCompare = array('type'=>'fruits','has_name'=>'OK', 'has_color'=>'Prague'); 

$new = array_filter(
       $data1, 
       function ($arr) use ($arrayToCompare) { // PHP 5.3 is required here!! 
        return ($arr[2] == $arrayToCompare['has_name'] 
         AND $arr[1] == $arrayToCompare['has_color']); 
       } 
      ); 
関連する問題