假设我需要在数组中运行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"
}
...
...
...
...
}
答案 0 :(得分: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的返回值。