使用 foreach 遍历数组时,遇到了这种情况:
$arr[2] = 2;
$arr[1] = 1;
$arr[0] = 0;
foreach ($arr as $key=>$value) {
echo $value . ' ';
}
结果是:
2 1 0
也就是遍历出来的结果是和数组元素写入的顺序一致,而不是和下标顺序一致。这是因为 foreach 的实现方式的原因吗?
使用 foreach 遍历数组时,遇到了这种情况:
$arr[2] = 2;
$arr[1] = 1;
$arr[0] = 0;
foreach ($arr as $key=>$value) {
echo $value . ' ';
}
结果是:
2 1 0
也就是遍历出来的结果是和数组元素写入的顺序一致,而不是和下标顺序一致。这是因为 foreach 的实现方式的原因吗?
至少PHP 4就是这么设定的,这也是PHP数组的特点之一(HashMap的特征)
你唯一能做的是 排序 ksort
除非如下操作,由PHP维护KEY的自增
$a[] = '';
array_push($a, '')
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答624 阅读✓ 已解决
802 阅读
PHP的数组保存元素的顺序是根据元素插入的顺序来保存的,而不是索引顺序
鸟哥博客 深入理解PHP之数组遍历顺序