我想根据字长对具有字符串值( word )的数组元素进行排序。我正在执行插入排序:
$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]。它不会得到数组的下一个值。它给出未定义的偏移量。如何获得数组的下一个值?
发布于 2014-11-01 20:22:12
您可以使用php的usort函数定义自己的比较函数。
请参阅http://php.net/manual/en/function.usort.php
因此,您所要做的就是编写您自己的函数,根据字符串的长度来比较它们,然后调用usort并传递您的函数。
发布于 2014-11-01 20:23:50
像这样的事情对你来说是可行的:
<?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循环!它非常强大!
https://stackoverflow.com/questions/26692790
复制相似问题