2014-11-01 67 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循環!它非常強大!