我怎样才能获得两个连续值的字符串数组的值

时间:2014-11-01 20:15:35

标签: php arrays string

我想根据字长对字符串值(字)的数组进行排序。 我正在执行插入排序:

$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]。它没有获得数组的下一个值。它给出了未定义的偏移量。如何获得数组的下一个值?

2 个答案:

答案 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并传入你的函数。