2012-03-11 6 views
1

私は、アレイ持っている:私が何をしたいのですがどのようなフィルタアレイ重複

(
[0] 
    (
     [room_num] => 1 
     [is_event] => true 
     [date] => '01/01/2013' 
    ) 
[1] 
    (
     [room_num] => 2 
     [is_event] => false 
     [date] => '' 
    ) 
[2] 
    (
     [room_num] => 3 
     [is_event] => false 
     [date] => '' 
    ) 
[3] 
    (
     [room_num] => 1 
     [is_event] => false 
     [date] => '' 
    ) 
) 

is_event = trueis_event = falseに取って代わるどこように結果をフィルタです。

(
[0] 
    (
     [room_num] => 1 
     [is_event] => true 
     [date] => '01/01/2013' 
    ) 
[1] 
    (
     [room_num] => 2 
     [is_event] => false 
     [date] => '' 
    ) 
[2] 
    (
     [room_num] => 3 
     [is_event] => false 
     [date] => '' 
    ) 
) 

一定値ON除くようarray_uniqueの分類:私返される配列は次のようになります。

これには組み込み関数がありますか?

+0

「ですが、この機能に建てられました?」 - いいえ。 – salathe

+0

@ salathe、それを作るのに十分なジレンマはありませんか? array_diff_assoc()のように何度も出現するようなものです。 –

+0

いいえ、それほど人気が​​ありません。実際には、あなたは最初です! – salathe

答えて

0

全く何も、私は、それを書いてループし、すべての機能に建てがないのであなたは、ループに持っているとまあ自分で

0

をチェックしましょう機能

に建てはありません。場合

あなたは興味がどのように:

// @filter is an array of data where (in my case) is_event=0, thus to be filtered 
// @keep is an array of data where (again in my case) is_event=1 (data to be kept) 
// @$key is the key we will make our comparisons with (in this case is_event) 

function filter_assoc_on_key($filter,$keep,$key){ 

     $tempArr = array(); 
     $removeArr = array(); 
     // make an array of the array entries with values matching my key 
     foreach($keep as $keeper){ 
      array_push($tempArr,$keeper[$key]); 
     } 
     // loop the array i want to filter and add the entries matching my key to the $removeArr 
     for($i=0;$i<count($filter);$i++){ 
      if(in_array($filter[$i][$key],$tempArr)){ 
       array_push($removeArr,$filter[$i]); 
      } 
     } 
     // merge the arrays so that I have all my values in one place 
     $newArr = array_merge($filter,$keep); 
     // get the values that are unique 
     $goodArr = array_diff_assoc($newArr,$removeArr); 

     return $goodArr; 
    }