2014-11-01 28 views
2

我想根据字长度排序具有字符串值(单词)的数组的元素。 我进行插入排序:我怎么能得到值的字符串数组的两个连续值

$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

看看['foreach'](http://php.net/manual/en/control-structures.foreach.php) – 2014-11-01 20:17:17

回答

0

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

http://php.net/manual/en/function.usort.php

因此,所有你需要做的就是写自己的功能,通过它们的长度比较字符串,然后调用usort并传递你的函数。

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

相关问题