gpt4 book ai didi

php - 排序函数是否考虑多级数组中的叶节点?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:42:38 24 4
gpt4 key购买 nike

下面这段代码的目的是创建一个多级数组,打印它,然后打乱它,再次打印它,并对数组进行排序。

$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
)
)
)

最佳答案

请参阅 PHP 的 comparison operator reference 的数组部分,尤其是数组比较转录。基本上 PHP 首先比较数组中键的数量,然后检查数组是否具有相同的键(在本例中,内部数组为 0),然后比较值。因为那里有一个嵌套数组,它会继续比较 sort() 中的叶节点,这导致在这种情况下数组按叶数组的第一个值排序(a dg)。

shuffle() 只是对您提供的数组的索引进行重新排序,而不管数组包含什么,因此它根本不会触及内部数组。

关于php - 排序函数是否考虑多级数组中的叶节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6251554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com