排序php数组内循环的数字


Sort php array inside loop by number

<?php
foreach ($jsonObj as $items) {
 foreach ($items["items"] as $itemlist){ 
// $itemlist['position']; I want them to echo in that order
echo $itemlist['name'];
}
}
?>

我有一个要循环遍历的数组。数组中有名称和顺序。我想按数字顺序显示它们,我怎么能让它先打印出数字最低的项目列表,然后是第二个等等?

您可以使用usortcmp_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

希望这对你有帮助

首先需要准备一个排序位置数组。Sort然后按引用排序,允许您第二次循环遍历它,但这一次是按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
    }
}

这样做的好处是,如果您想对其他属性进行排序,则可以这样做。例如,如果有可能两个人的"position"是相同的,那么你可以根据他们的名字按字母顺序排序。

Codepad的完整解决方案,两个答案比较:http://codepad.viper - 7. - com/5yj72s