在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
答案 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;
答案 2 :(得分:-1)
您可以使用uasort代替usort
。
来自文档:
uasort - 使用用户定义的比较函数对数组进行排序 维护索引关联
普通usort
函数不会执行此操作:
如果两个成员比较相等,则它们在排序中的相对顺序 数组未定义。