鍍金池/ 問答/PHP/ PHP數(shù)組打印問題

PHP數(shù)組打印問題

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

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

print_r($arr);

第一個(gè)打印為什么會(huì)是[2,3,0,1];

回答
編輯回答
裸橙

php數(shù)組下標(biāo)并不是與其他語言(C, Java)的下標(biāo)等同. php數(shù)組的下標(biāo)是類似Java Map里的鍵值.
即php array是key->value構(gòu)成的鍵值對.

相應(yīng)的php也有很多處理函數(shù)分別是針對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);

你會(huì)發(fā)現(xiàn)輸出便一致了.

php這樣設(shè)計(jì)有很多好處.
如:

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

上面的代碼如果是連續(xù)下標(biāo)地方式分配內(nèi)存的話,非常浪費(fèi)且難以實(shí)現(xiàn), 但如果是鍵值對的話便很容易.

2018年5月28日 10:26
編輯回答
兮顏

因?yàn)閜hp默認(rèn)不排序啊,放進(jìn)去什么順序就是什么順序

2017年5月9日 10:42