【发布时间】:2014-11-03 07:39:33
【问题描述】:
我正在学习 PHP,但有一个问题困扰着我。 PHP 数组在内部似乎是哈希图。如果你给一个数组一个键和值,它几乎肯定必须通过某种散列函数将它放入实际数组中,对吧?那么,如果我给一个数组提供一系列键和值,然后将它们转储到屏幕上,为什么 PHP 会保持我输入值的顺序?
例如:
$arr = array();
$arr[1] = 'one';
$arr[3] = 'three';
$arr[2] = 'two';
foreach($arr as $key => $val)
echo "$key => $val<br>"
会在典型的哈希图中呈现“1 => one, 2 => two, 3 => three”,但我得到的是“1 => one, 3 => three, 2 => two”。对我来说,这意味着必须同时存在顺序和密钥,无论这实际上是什么数据类型。
提前感谢您的任何解释。
【问题讨论】:
-
文档中的第一行:“PHP 中的数组实际上是一个有序映射。映射是将值与键相关联的类型”php.net/manual/en/language.types.array.php 所以是的,它们已订购。
-
简短的回答是它类似于 javas linkedHashMap