以下代码旨在创建一个多级数组,打印它,然后对其进行混洗,再次打印它,最后对该数组进行排序。
现在我观察到的奇怪现象是,当使用
$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
)
)
)