2
 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

4 回答 4

4

您的代码失败,因为您在这里有一个数组数组。您应该搜索“按子数组键对 php 数组进行排序”,或者您可以尝试以下操作:

$array[1] = 'Yamaha';
$array[2] = 'Suzuki'; 
// ...
sort($array);
echo json_encode($array);
于 2013-02-05T12:21:18.523 回答
3

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

$array[1] = 'Yamaha';       

$array[2] = 'Suzuki';     

然后sort($array)

于 2013-02-05T12:23:33.047 回答
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')
于 2013-02-05T12:26:23.010 回答
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);
}
?>
于 2013-02-05T12:36:23.363 回答