我知道PHP数组不是一个数组,它实际上是一个有序的哈希表,但是对于我为什么运行此代码仍然没有意义:
<?php
$teste = [];
$teste[2] = 'Test 2';
$teste[1] = 'Test 1';
$teste[3] = 'Test 3';
foreach ($teste as $t) {
echo $t;
}
它打印以下内容:
Test 2
Test 1
Test 3
结果对我来说没有意义,不应该像这样订购
Test 1
Test 2
Test 3
答案 0 :(得分:0)
All arrays in PHP are actually ordered maps。因此,在映射中遇到键-值对的顺序将主要取决于将键-值对添加到映射中的顺序。严格按照递增顺序使用0..n-1
索引序列的数组只是一种特殊情况。您可以通过以下操作对此进行测试:
$my_arr = array();
$my_arr[3] = 'd';
$my_arr[1] = 'b';
$my_arr[2] = 'c';
$my_arr[0] = 'a';
// #1
echo json_encode($my_arr, JSON_PRETTY_PRINT) . "\n";
// #2
ksort($my_arr);
echo json_encode($my_arr, JSON_PRETTY_PRINT);
#1的输出:
{
"3": "d",
"1": "b",
"2": "c",
"0": "a"
}
#2的输出:
[
"a",
"b",
"c",
"d"
]
请注意,$my_arr
的两个版本之间的唯一区别是键的顺序。数组被乱序编码为一个对象,但顺序被编码为一个简单数组。
请查看文档的链接部分,以获取有关PHP数组的更多信息。这已经是该语言的有据可查的功能。如果您希望键的排序顺序严格增加,请使用ksort()
,如上面的示例所示。