2012-12-06 59 views
0

比方說,我需要通過一個數組運行一個for循環,我需要檢查鍵值。我想打印與不匹配的元素之前不匹配的數組元素。如何基於兩個鍵值對數組鍵進行排序?

因此,使用下面的數組(爲了清晰起見添加額外的值),我想打印如下。它需要匹配current_taglast_tag值。如果它們不匹配,則需要在其他之前打印該關鍵字。

期望的結果

TEST2 

TEST1 
TEST3 
TEST4 

陣列

array(2) { 
    [0]=> 
    array(3) { 
     ["name"]=> 
      string(3) "TEST1" 
     ["current_tag"]=> 
      string(13) "20121129_TEST1" 
     ["last_tag"]=> 
      string(13) "20121129_TEST1" 
    } 
    [1]=> 
    array(3) { 
     ["name"]=> 
      string(3) "TEST2" 
     ["current_tag"]=> 
      string(13) "20121205_TEST2" 
     ["last_tag"]=> 
      string(13) "20121129_TEST2" 
    } 
    ... 
    ... 
    ... 
    ... 
} 

回答

1

我會usort陣列與一個自定義的回調對數組進行排序。分類後,您可以打印每個name密鑰。

usort($array, function($a, $b) { 
    $match_a = $a['current_tag'] == $a['last_tag']; 
    $match_b = $b['current_tag'] == $b['last_tag']; 

    if ($match_a && $match_b) { 
     return 0; 
    } elseif ($match_a && !$match_b) { 
     return 1; 
    } elseif (!$match_a && $match_b) { 
     return -1; 
    } 
}); 

array_walk($array, function($item) { 
    echo $item['name']; 
}); 

如果以錯誤的順序排序,只需切換1和-1返回值。

+0

完美的作品謝謝你。 – luckytaxi

+0

只是想到了一些事情,雖然這是有效的,但我需要一種方法來「分離」它們。所以,它應該打印出與先不匹配的值,然後再打破以區分其他數組值。看我上面的例子。 – luckytaxi

相關問題