2013-10-06 122 views
0

我有一個字符串像這樣的數組:我怎樣才能字符串數組的子分類

array 
    0 => string 'cheese=french' 
    1 => string 'pizza=large&cheese=french' 
    2 => string 'cheese=french&pizza=small' 
    3 => string 'cheese=italian' 

我需要在字符串中的每個子(由&分)數組中alphabettically排序。例如: 比薩=大&芝士=法國應該是相反的方式:芝士=法國&比薩=大,因爲'C'在'P'之前。

我想我可能會爆炸的原始數組是這樣的:

foreach ($urls as $url) 
{ 
    $exploded_urls[] = explode('&',$url); 
} 

array 
    0 => array 
     0 => string 'cheese=french' 
    1 => array 
     0 => string 'pizza=large' 
     1 => string 'cheese=french' 
    2 => array 
     0 => string 'cheese=french' 
     1 => string 'pizza=small' 
    3 => array 
     0 => string 'cheese=italian' 

,然後在foreach循環排序使用,如:

foreach($exploded_urls as $url_to_sort) 
{ 
    $sorted_urls[] = sort($url_to_sort); 
} 

但是當我這樣做,它只是返回:

array 
    0 => boolean true 
    1 => boolean true 
    2 => boolean true 
    3 => boolean true 
    4 => boolean true 

達:

14 => boolean true 

當我做這樣的:

foreach($exploded_urls as $url_to_sort) 
{ 
    sort($url_to_sort); 
} 

我回來後,排序的陣列中的一個:

array 
    0 => string 'cheese=dutch' 
    1 => string 'pizza=small' 

什麼是去了解這個正確的方法是什麼?

回答

0

sort返回一個布爾值(這實際上是無用的),並在原地進行排序。代碼可以很簡單

// note iteration by reference 
foreach($exploded_urls as &$url_to_sort){ 
    sort($url_to_sort); 
} 

在此循環之後,將對$exploded_urls的每個元素進行排序。

1

sort函數返回一個布爾值來顯示它是否成功。在您的行中:

$sorted_urls[] = sort($url_to_sort); 

您正在將sort的返回值(true或false)賦值給$ sorted_urls數組。你不需要這樣做 - sort會修改你調用它的數組,所以不要試圖將結果分配給一個新數組,只需調用sort然後看看$ url_to_sort爲你的排序數組。

從文檔上sort

$fruits = array("lemon", "orange", "banana", "apple"); 
    sort($fruits); 
    foreach ($fruits as $key => $val) { 
     echo "fruits[" . $key . "] = " . $val . "\n"; 
    } 

上例將輸出:

水果[0] =蘋果

水果[1] =香蕉

水果[2 ] =檸檬

水果[3] =橙色

相關問題