使用 foreach 遍历数组时,遇到了这种情况:
$arr[2] = 2;
$arr[1] = 1;
$arr[0] = 0;
foreach ($arr as $key=>$value) {
echo $value . ' ';
}
结果是:
2 1 0
也就是遍历出来的结果是和数组元素写入的顺序一致,而不是和下标顺序一致。这是因为 foreach 的实现方式的原因吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP的数组保存元素的顺序是根据元素插入的顺序来保存的,而不是索引顺序
鸟哥博客 深入理解PHP之数组遍历顺序
先进先出原则,数据都是存放在堆栈中,先定义的$arr[2] = 2,肯定是放在首位,所以遍历的时候指针先指向首位的元素
先排序sort asort rsort arsort 很多的数组函数 总有一个适合你 ^_^ ^_^ ^_^
这和php版本没关系吧
foreach依赖的是数组内部指针
你echo current($arr) 看看当前的指针位置
至少PHP 4就是这么设定的,这也是PHP数组的特点之一(HashMap的特征)
你唯一能做的是 排序
ksort除非如下操作,由PHP维护KEY的自增
这个是文本流的形式,跟队列差不多,先插入先输出。可以利用一些PHP数组函数 进行排序。