2011-06-27 96 views
1

我想排序下列數組的鍵。我使用kso​​rt(),但我不知道如何使用它。任何想法?如何對關聯數組進行排序

<?php 
     $a = array(
       'kuy' => 'kuy', 
       'apple' => 'apple', 
       'thida' => 'thida', 
       'vanna' => 'vanna', 
       'ravy' => 'ravy' 
      ); 

     $b = ksort($a); 
     echo "<pre>"; 
     print_r($b); 
     echo "</pre>"; 
+6

也許'ksort'不是正確的功能。這取決於你想要分類的東西。 [這裏是所有排序函數的列表](http://php.net/manual/en/array.sorting.php)。要學習如何使用一個函數,**可以查看它的文檔**,例如http://php.net/manual/en/function.ksort.php –

+0

那麼print_r($ b)會告訴你什麼?你讀過這個http://www.php.net/manual/en/function.ksort.php嗎?真的很難做得更清楚。 – vascowhite

+0

[如何在php中對關聯數組進行排序](http:// stackoverflow。com/questions/5497482/how-to-sort-an-associative-array-in-php) – Bobby

回答

4

ksort()排序陣列本身並不會創建一個排序副本

$a = array(
    'kuy' => 'kuy', 
    'apple' => 'apple', 
    'thida' => 'thida', 
    'vanna' => 'vanna', 
    'ravy' => 'ravy' 
); 

ksort($a); 
echo "<pre>"; 
print_r($a); 
echo "</pre>"; 
1

ksort返回布爾值和排序原始數組,所以你應該打印$a而不是$b因爲$b是這是真或假取決於ksort的結果ksort返回一個布爾值

ksort($a);  
print_r($a); 
+1

thnaks人,它的工作原理。 –

0

ksort返回是否成功的布爾值,它不會返回另一個排序數組。它改變了原始數組。

print_r($a); 
1

ksort返回一個布爾值 - 排序是否成功。它對數組進行就地排序 - 它更改數組變量而不是返回已排序的副本。

嘗試:

ksort($a); 
print_r($a); 
+0

感謝傢伙,它的工作原理。 –

2

ksort不返回數組。它只是對原始數組進行排序,並返回bool「成功返回TRUE或失敗時返回FALSE」。

所以你的排序數組是$ a而不是$ b。 看這裏: http://codepad.org/zMTFTPGf

+0

錯誤,'ksort()'返回一個布爾值。 http://php.net/ksort – KingCrunch

+0

@KingCrunch,對不正確的語言道歉,我的意思是它不返回一個數組。 – DhruvPathak

+0

獨立於你的意思,它的錯誤;)你應該修復你的答案 – KingCrunch

1

ksort接受其參數作爲參考並直接修改它,返回值只是表示syccess或失敗。

0

正如Felix說的那樣看文檔。你也可以看一下例子here

2

如果您不希望保留的$一個原來的順序,然後使用: -

ksort($a); 
print_r($a); 

如果你想保持一個$,但也希望有一個排序的版本使用: -

$b = $a; 
ksort($b); 
print_r($b); 

正如我的評論所說,手冊頁說得很清楚。 http://www.php.net/manual/en/function.ksort.php