2011-07-18 21 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