我尝试使用sort()对数组进行排序,但它失败了

时间:2013-02-05 12:17:51

标签: php arrays sorting

 if ( $_GET['_value'] == 'moto'  )
     {
        $array[] = array('1' => 'Yamaha');
        $array[] = array('2' => 'Suzuki');  
        $array[] = array('3' => 'Triumph');
        $array[] = array('4' => 'KTM');
        $array[] = array('5' => 'Honda');
        $array[] = array('6' => 'Harley Davidson');
        $array[] = array('7' => 'Buell');
        $array[] = array('8' => 'MV Agusta');
        $array[] = array('9' => 'Ducati');
        $array[] = array('10' => 'Other');

      } 
 $array = sort($array);
 echo json_encode( $array );

这是我拥有的代码,它由链式下拉列表拉动。 我希望它返回按字母顺序排序的值,但根据您看到的代码返回一个空数组。可能是我犯的错误/

4 个答案:

答案 0 :(得分:4)

您的代码失败,因为您在此处拥有一组数组。 你应该搜索“按子数组键排序php数组” 或者你可以尝试类似的东西:

$array[1] = 'Yamaha';
$array[2] = 'Suzuki'; 
// ...
sort($array);
echo json_encode($array);

答案 1 :(得分:3)

您的数组包含数组,因此无法排序,请尝试:

$array[1] = 'Yamaha';       

$array[2] = 'Suzuki';     

然后sort($array)

答案 2 :(得分:2)

您可以使用uasort()函数

像:

function cmp($a, $b) {
    $a = reset($a);
    $b = reset($b);
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

uasort($array, 'cmp')

答案 3 :(得分:1)

它一点也不漂亮,但是这样做了。

除非你受到限制,否则你应该真正使用其他一些建议。

<?
if ( $_GET['_value'] == 'moto'  ) {
    $array[] = array('1' => 'Yamaha');
    $array[] = array('2' => 'Suzuki');  
    $array[] = array('3' => 'Triumph');
    $array[] = array('4' => 'KTM');
    $array[] = array('5' => 'Honda');
    $array[] = array('6' => 'Harley Davidson');
    $array[] = array('7' => 'Buell');
    $array[] = array('8' => 'MV Agusta');
    $array[] = array('9' => 'Ducati');
    $array[] = array('10' => 'Other');
    foreach($array as $i => $v)
    {
        $v = array_values($v);
        $sort[] = $v[0];
    }
    sort($sort);
    $c = 0;
    foreach($sort as $i => $v)
    {
        $c++;
        $sorted[] = array($c=>$v);
    }

    echo json_encode($sorted);
}
?>