PHP数组打印问题

$arr[2] = 2;
$arr[3] = 3;
$arr[0] = 0;
$arr[1] = 1;
print_r($arr);

$arr = [0, 1, 2, 3];

print_r($arr);

第一个打印为什么会是[2,3,0,1];

阅读 2.5k
2 个回答

php数组下标并不是与其他语言(C, Java)的下标等同. php数组的下标是类似Java Map里的键值.
即php array是key->value构成的键值对.

相应的php也有很多处理函数分别是针对key和value的, 比如ksort是按键值排序, sort是按value排序.

如果你想按顺序输出,可以用如下代码

<?php

$arr[2] = 2;
$arr[3] = 3;
$arr[0] = 0;
$arr[1] = 1;
print_r($arr);

ksort($arr);

print_r($arr);


$arr = [0, 1, 2, 3];

print_r($arr);

你会发现输出便一致了.

php这样设计有很多好处.
如:

$arr[2] = 20;
$arr[3] = 3;
$arr[100000000] = 0;
$arr[1] = 1;
print_r($arr);

上面的代码如果是连续下标地方式分配内存的话,非常浪费且难以实现, 但如果是键值对的话便很容易.

因为php默认不排序啊,放进去什么顺序就是什么顺序

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题