PHP按顺序排列数组,然后按索引排序

时间:2017-08-09 06:05:47

标签: php arrays sorting

在PHP中,您可以按照大小来命令字符串数组:

usort($parts, function($a, $b) {
    return strlen($b) - strlen($a);
});

如何按尺寸订购字符串数组,但如果两个字符串的大小相同,请按原始数组中的索引排序。

例如:

I a o delicious cake

变为:

delicious cake I a o

目前我的代码变为:

delicious cake o a i

3 个答案:

答案 0 :(得分:3)

请将此方法用于排序数组。

<?php
$parts = "I a o delicious cake";
$parts = explode(" ",$parts);
array_multisort(array_map('strlen', $parts),SORT_DESC, $parts); // this is for DESC order
//array_multisort(array_map('strlen', $parts),SORT_ASC, $parts); // you can use this for ASC order
echo "<pre>";
print_r($parts); //return like this "delicious cake I a o"
?>

答案 1 :(得分:0)

对于长度排序然后索引,您可以使用array_multisort,如下所示

<?php

$str="I love to code";
$parts=explode(" ", $str);

$keys = array_keys($parts);
$values = array_values($parts);

array_multisort(array_map('strlen', $values), SORT_ASC, $keys, SORT_ASC, $parts);

$new_str = implode(" ", $parts);
echo $new_str;

演示:https://3v4l.org/BJ1Cl

答案 2 :(得分:-1)

您可以使用uasort代替usort

来自文档:

  

uasort - 使用用户定义的比较函数对数组进行排序   维护索引关联

普通usort函数不会执行此操作:

  

如果两个成员比较相等,则它们在排序中的相对顺序   数组未定义。