<?php
foreach ($jsonObj as $items) {
foreach ($items["items"] as $itemlist){
// $itemlist['position']; I want them to echo in that order
echo $itemlist['name'];
}
}
?>
我有一个循环遍历的数组。在该数组中有名称和顺序。我想按数字顺序显示它们,我怎样才能让它首先打印出数字最小的项目列表,然后是第二个等等?
您可以为此使用usort
with 。cmp_function
试试这个功能:
function compare_position($a, $b) {
return $a['position'] - $b['position'];
}
然后当你遍历数组时:
foreach ($jsonObj as $items) {
usort($items['items'], "compare_position");
foreach ($items["items"] as $itemlist){
echo $itemlist['position'];
echo $itemlist['name'];
}
}
更多关于usort
可以在这里找到http://php.net/manual/en/function.usort.php
希望这可以帮助 :)
您需要先准备一个要排序的位置数组。排序然后按引用排序,允许您第二次循环遍历它,但这次按array_multisort()
.
<?php
foreach($jsonObj as $items) {
foreach($items['items'] as $key => $itemlist) {
$positions[$key] = $itemlist['position'];
$names[$key] = $itemlist['name'];
}
array_multisort($positions, SORT_ASC, $items['items']);
foreach($items['items'] as $itemlist) {
echo $itemlist['name'], "<br />";
// Now in asc order of positions
}
}
这样做的好处是,如果出现您想要排序的其他属性,您可以这样做。例如,如果两个人的“职位”可能相同,那么您可以按他们的姓名等按字母顺序排序。
键盘上的完整解决方案,比较了两个答案:http: //codepad.viper-7.com/5yJ72S