【发布时间】:2011-06-06 11:47:40
【问题描述】:
下面这段代码用于创建一个多级数组,打印它,然后打乱它,再次打印它,并对数组进行排序。
$arr=array(
array(
array('a','b','c')
),
array(
array('d','e','f')
),
array(
array('g','h','i')
),
);
print_r($arr);
shuffle($arr);
print_r($arr);
sort($arr);
print_r($arr);
现在我观察到的奇怪的事情是,当使用 shuffle() 时,它只会对正在被洗牌的数组的索引进行洗牌,它不会洗牌,最里面的元素 a,b,c 到别的东西,但是当使用sort() 函数,它将数组重新排序到正常状态,叶子节点恢复到字母顺序。为什么会这样?
这是示例输出: *原始数组*
Array
(
[0] => Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
)
[1] => Array
(
[0] => Array
(
[0] => d
[1] => e
[2] => f
)
)
[2] => Array
(
[0] => Array
(
[0] => g
[1] => h
[2] => i
)
)
)
随机数组
Array
(
[0] => Array
(
[0] => Array
(
[0] => g
[1] => h
[2] => i
)
)
[1] => Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
)
[2] => Array
(
[0] => Array
(
[0] => d
[1] => e
[2] => f
)
)
)
排序数组
Array
(
[0] => Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
)
[1] => Array
(
[0] => Array
(
[0] => d
[1] => e
[2] => f
)
)
[2] => Array
(
[0] => Array
(
[0] => g
[1] => h
[2] => i
)
)
)
【问题讨论】: