[英]How to sort array key based on two key values?
假設我需要在數組中運行一個for循環,在該循環中需要檢查鍵值。 我想在不匹配的元素之前打印不匹配的數組元素。
因此,使用下面的數組(為清楚起見添加了額外的值),我希望它按以下方式打印。 它需要匹配current_tag
和last_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"
}
...
...
...
...
}
我會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返回值即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.