如何获取字符串数组的两个连续值的值


how can i get value of two consecutive value of string array

我想根据单词长度对具有字符串值(单词)的数组元素进行排序。我正在执行插入排序:

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

这样的东西应该对你有用:

<?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循环!它非常强大!

您可以使用php的usort函数定义自己的比较函数。

请参阅http://php.net/manual/en/function.usort.php

因此,您所要做的就是编写自己的函数,根据字符串的长度对其进行比较,然后调用usort并传入您的函数。