2016-09-14 43 views
0

如何設置multifiltermulticallbackPHP 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']); 
       } 
      );