2011-07-18 24 views
-1

我正在創建一個模板解析器,我需要對傳遞給解析器的變量數組進行排序,以便首先處理數組中的每個數組元素。例如:在數組和字符串值之間對數組進行排序

$data = array(
    'name' => 'Steven', 
    'type' => array(
     'gender' => 'M', 
     'age' => 23' 
    ) 
) 

我需要'type'是第一個,因爲它是一個數組,'name'是最後一個。有沒有人有關於如何做到這一點的想法?我在不同的排序功能上查看了php.net的手冊,但沒有看到任何適用於我的情況。

+2

命令在哈希中沒有意義 – zerkms

+0

你是什麼意思哈希? – Wilson212

+2

字符串引用值的集合的種類 - 是散列。數值索引引用的值集合 - 數組。 – zerkms

回答

2
function cmp($a, $b) { 
    return is_array($a)? -1 : 0; 
} 

uasort($data, "cmp"); 
+0

很不錯:) ...看起來很乾淨容易 – Wilson212

+0

這是絕對錯誤的。它會把數組放在非數組之後。 – AlienWebguy

+0

你是對的,AlienWebguy!謝謝!根據您的評論修復了我的帖子。 – sntran

3
function cmp($a, $b) { 
    return is_array($a) ? -1 : 1; 
}  
uasort($data, "cmp"); 

這將根據值類型按字母順序對數組進行排序。數組在String之前。

+0

我修正了$ a到$ a的比較,並將排序函數更改爲uasort,因此您不會清除所有數組鍵,並且簡化了比較,因爲您並不需要所有這些分支。 –

+0

謝謝你:) – Wilson212

+0

謝謝丹。可愛的修復:) – AlienWebguy