2017-07-26 132 views
2

我想对变量中保存的数据进行排序。我首先将它转换为一个数组,然后尝试按升序对其进行排序,但似乎没有工作。为什么我的php脚本不能排序数组?

这里是我的代码

$str = '"10:A", "11:Q", "12:V", "13:A", "14:G", "15:I", "16:E", "17:D", "18:N", "19:R", "1:A", "20:U", "2:X", "3:C", "4:D", "5:R", "6:U", "7:V", "8:I", "9:S"'; 
$cars = (explode(",",$str)); 
$cars = array($cars); 

sort($cars, 1); 
$clength=count($cars); 
for($x=0;$x<$clength;$x++) 
    { 
    echo $cars[$x]; 
    echo "<br>"; 
    } 

什么解决办法呢?

+0

哪里是要排序的代码?只能看到它打印分割的结果.. –

+0

$ str ='“10:A”,“11:Q”,“12:V”,“13:A”,“14:G”,“15:I” ,16:E,17:D,18:N,19:R,1:A,20:U,2:X,3:C, 4:D,5:R,6:U,7:V,8:I,9:S, $ cars =(explode(“,”,$ str)); asort($ cars,1); $ clength = count($ cars); ($ x = 0; $ x <$ clength; $ x ++) { echo $ cars [$ x]; echo“
”; } –

回答

0

尝试rsort

$str = '"10:A", "11:Q", "12:V"'; 
    $cars = (explode(",",$str)); 

    rsort($cars); 
    $clength=count($cars); 
    for($x=0;$x<$clength;$x++) 
     { 
     echo $cars[$x]; 
     echo "<br>"; 
     } 
0

如果你想根据数量进行排序试试这个:

<?php 
function my_sort($a,$b) 
{ 
    $intval_a = filter_var($a, FILTER_SANITIZE_NUMBER_INT); 
    $intval_b = filter_var($b, FILTER_SANITIZE_NUMBER_INT); 
    if(intval($intval_a) > intval($intval_b)) 
    return 1; 
} 
$str = '"10:A", "11:Q", "12:V", "13:A", "14:G", "15:I", "16:E", "17:D", "18:N", "19:R", "1:A", "20:U", "2:X", "3:C", "4:D", "5:R", "6:U", "7:V", "8:I", "9:S"'; 
$cars = explode(',',$str); 
$cars = ($cars); 

usort($cars, "my_sort"); 
$clength=count($cars); 
for($x=0;$x<$clength;$x++) 
{ 
    echo $cars[$x]; 
    echo "<br>"; 
} 
0

有一对夫妇的事情,我已经注意到了。首先,你已经爆炸了产生一个数组的字符串。然后,您将该数组放入另一个数组并尝试对其进行排序。您应该删除行$cars = array($cars);

我也建议尝试对它们进行排序之前,去除串引号和空格,所以你在做排序上10:A而不是"10:A",例如。

另一件事是排序函数应该把一个标志作为第二个参数来定义要执行的排序类型。请参阅docs了解可用的不同标志。我猜你希望它进行排序

1:ç...

代替

1:A,2:X,3 A,10: A,11:Q ...

在这种情况下,您应该使用SORT_NATURAL标志。 (或者,您可以使用natsortfunction)。

这些变化将使以下代码:

$str = '"10:A", "11:Q", "12:V", "13:A", "14:G", "15:I", "16:E", "17:D", "18:N", "19:R", "1:A", "20:U", "2:X", "3:C", "4:D", "5:R", "6:U", "7:V", "8:I", "9:S"'; 
$str = str_replace(array('"', ' '), '', $str); 
$cars = explode(",",$str); 

sort($cars, SORT_NATURAL); 
$clength = count($cars); 
for($x = 0; $x < $clength; $x++) { 
    echo $cars[$x]; 
    echo "<br>"; 
} 
0

使用natsort()函数

$str = '"10:A", "11:Q", "12:V", "13:A", "14:G", "15:I", "16:E", "17:D", "18:N", "19:R", "1:A", "20:U", "2:X", "3:C", "4:D", "5:R", "6:U", "7:V", "8:I", "9:S"'; 
$cars = (explode(",",$str)); 

natsort($cars); 
echo "<pre>"; print_r($cars); 
foreach($cars as $car) 
{ 
    echo $car."<br>"; 
} 

Check here

希望这会有所帮助。

相关问题