Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数组排序()_Php_Sorting - Fatal编程技术网

PHP数组排序()

PHP数组排序(),php,sorting,Php,Sorting,我被困在一个排序问题上,我有一个10个数字(1-10)的数组,我需要按照下面的方式对数组进行排序,例如,10在1之后 期望的结果 $arr['a1','a10','a2','a3','a4','a5','a6','a7','a8','a9']; $arr['a1','a2','a3','a4','a5','a6','a7','a8','a9','a10']; sort($arr); $arr['a10','a1','a2','a3','a4','a5','a6','a7','a8','a9

我被困在一个排序问题上,我有一个10个数字(1-10)的数组,我需要按照下面的方式对数组进行排序,例如,10在1之后

期望的结果

$arr['a1','a10','a2','a3','a4','a5','a6','a7','a8','a9'];
$arr['a1','a2','a3','a4','a5','a6','a7','a8','a9','a10'];

sort($arr);

$arr['a10','a1','a2','a3','a4','a5','a6','a7','a8','a9'];
实际结果

$arr['a1','a10','a2','a3','a4','a5','a6','a7','a8','a9'];
$arr['a1','a2','a3','a4','a5','a6','a7','a8','a9','a10'];

sort($arr);

$arr['a10','a1','a2','a3','a4','a5','a6','a7','a8','a9'];
我不知道这类排序的名称,也不知道如何执行,如果有人能帮助我,我将不胜感激

注意:数字是字符串的一部分

尝试
sort($arr,sort\u string)
将输入显式地视为字符串

编辑:现在您已经给出了实际字符串,请尝试以下操作:

usort($arr,function($a,$b) {
    $a = explode("=",$a);
    $b = explode("=",$b);
    return $a[0] == $b[0] ? strcmp($a[1],$b[1]) : strcmp($a[0],$b[0]);
});
尝试
sort($arr,sort\u STRING)
将输入显式处理为字符串

编辑:现在您已经给出了实际字符串,请尝试以下操作:

usort($arr,function($a,$b) {
    $a = explode("=",$a);
    $b = explode("=",$b);
    return $a[0] == $b[0] ? strcmp($a[1],$b[1]) : strcmp($a[0],$b[0]);
});

当然,您要按字母顺序排序,而不是按数字排序

sort($arr, SORT_STRING);

参考:

当然,您希望按字母顺序排序,而不是按数字排序

sort($arr, SORT_STRING);

ref:

您可以使用sort的第二个参数更改其行为

试试这个:

sort($arr, SORT_STRING);

可以使用sort的第二个参数更改其行为

试试这个:

sort($arr, SORT_STRING);


如果将20和100添加到传入数组中,期望的结果会是什么?这种排序顺序的应用是什么?@Travis我还没有得到足够的结果,因为我有一个小于100的数组,但它可能是1,10100,2200。我们能“安全地”吗假设所有的
字符串
值实际上都是
数字
?很抱歉,我应该提到它们是字符串。如果将20和100添加到传入数组中,会得到什么结果?这种排序顺序的应用是什么?@Travis我还没有得到足够的结果,因为我的数组小于100,但它可能会大概是10100,2200我们能“安全”吗假设所有的
字符串
值实际上都是
数字
?对不起,我应该提到它们是字符串。是的,我写答案写得很慢,所以kolink可能在我写的时候回答。是的,我写答案写得很慢,所以kolink可能在我写的时候回答。是的,我一直在测试它,它对我写的字符串不起作用具有以下属性:
$arr=array('ASINList.ASIN.2=158080939','ASINList.ASIN.1=1846031249','ASINList.ASIN.10=0340912081','ASINList.ASIN.3=158080939')好的,谢谢我把它整理好了,我设法按键排序,谢谢。啊,那是因为
=
0
,所以
1=
10
。难怪。实际上,我很想听听你的答案好吧,我一直在测试它,但它与我拥有的字符串不兼容,它是
$arr=array('ASINList.ASIN.2=158080939','ASINList.ASIN.1=1846031249','ASINList.ASIN.10=0340912081','ASINList.ASIN.3=158080939')好的,谢谢我把它整理好了,我设法按键排序,谢谢。啊,那是因为
=
0
,所以
1=
10
。难怪。将编辑答案。事实上,我很想听到你的答案