【问题标题】:How do PHP arrays actually work? [duplicate]PHP 数组实际上是如何工作的? [复制]
【发布时间】: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 =&gt; one, 2 =&gt; two, 3 =&gt; three”,但我得到的是“1 =&gt; one, 3 =&gt; three, 2 =&gt; two”。对我来说,这意味着必须同时存在顺序和密钥,无论这实际上是什么数据类型。

提前感谢您的任何解释。

【问题讨论】:

  • 文档中的第一行:“PHP 中的数组实际上是一个有序映射。映射是将值与键相关联的类型php.net/manual/en/language.types.array.php 所以是的,它们已订购。
  • 简短的回答是它类似于 javas linkedHashMap

标签: php arrays


【解决方案1】:

您对存储为哈希表或有序映射的数组是正确的。基本上,PHP 中的所有内容都是一个哈希表。

请看这里:Understanding PHP's internal array implementation

【讨论】:

  • 对,但是哈希表不应该记录我在 2 之前添加 3 的事实。
  • 当然。如果您查看链接,哈希表包含 arBucket 用于包含 pListNext 和 pListLast 用于数组的存储桶。
猜你喜欢
  • 2011-09-19
  • 1970-01-01
  • 2019-01-01
  • 2017-07-05
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多