【问题标题】:What is an array internal pointer in PHP?PHP中的数组内部指针是什么?
【发布时间】:2015-03-19 12:13:25
【问题描述】:

我正在使用end() 将数组的内部指针设置为其最后一个元素。然后我使用key() 来获取最后一个元素的键。

例如:

$array = ('one' => 'fish', 'two' => 'fish', 'red' => 'fish', 'blue' => 'fish');
end($array)
$last_key = key($array);

我唯一不明白的是数组的内部指针到底是什么。有人可以向我解释吗?我一直在尝试,但找不到解释。

另外,设置数组的内部指针对数组有什么影响?

【问题讨论】:

标签: php arrays terminology


【解决方案1】:

在PHP“幕后”中有一个“数组”的内部实现,用C编写。这个实现定义了数组数据如何实际存储在内存中的细节,数组的行为方式,如何访问它们等。部分这个 C 实现的核心是一个“数组指针”,它简单地指向数组的特定索引。在非常简化的 PHP 代码中,它是这样的:

class Array {

    private $data = [];
    private $pointer = 0;

    public function key() {
        return $this->data[$this->pointer]['key'];
    }

}

您无法从 PHP 代码直接访问此数组指针,您可以使用 endreseteach 等 PHP 函数间接修改和影响它。使这些函数正常工作是必要的;否则你无法使用next() 迭代数组,因为它会在哪里记住“下一个”条目是什么?

【讨论】:

  • 有趣的是,如果您不知道这一点并开始在同一数组的循环内循环数组。
猜你喜欢
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 2021-08-16
  • 2011-05-19
  • 2021-12-01
相关资源
最近更新 更多