我想根据字长对字符串值(字)的数组进行排序。 我正在执行插入排序:
$str="welcome to php";
$st=explode(" ",$str);
$a=count($st);
for($i=0;$i<$a;$i++)
{
for($j=0;$j<$a;$j++)
{
if(strlen($st[$j])<strlen($st[$j+1]))
{$t=$st[$j];
$st[$j]=$st[$j+1];
$st[$j+1]=$t;}
}}
所以问题是$st[$j+1]
。它没有获得数组的下一个值。它给出了未定义的偏移量。如何获得数组的下一个值?
答案 0 :(得分:3)
这样的事情对你有用:
<?php
function lengthSort($a, $b){
return strlen($b) - strlen($a);
}
$str = "welcome to php";
$st = explode(" ", $str);
usort($st,'lengthSort');
var_dump($st);
?>
输出:
array(3) {
[0]=>
string(7) "welcome"
[1]=>
string(3) "php"
[2]=>
string(2) "to"
}
同样建议Nick J
看看foreach循环!它非常强大!
答案 1 :(得分:0)
您可以使用php的usort
函数定义自己的比较函数。
请参阅http://php.net/manual/en/function.usort.php
所以你要做的就是编写自己的函数来比较字符串的长度,然后调用usort
并传入你的函数。