php - 什么是 PHP 中的数组内部指针?

标签 php arrays terminology

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

例如:

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

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

此外,设置数组的内部指针如何影响该数组?

最佳答案

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

class Array {

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

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

}

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

关于php - 什么是 PHP 中的数组内部指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28059372/

相关文章:

php - 将 PHP 数组插入 Javascript 数组

c - 生成 10 个随机字符

python - numpy.where 返回元组的目的是什么?

javascript - 打印出重复的数字

multithreading - "embarrassingly parallel"的反义词是什么?

terminology - 内核或核心 - 何时使用它们?

functional-programming - “关闭”到底是什么意思?

php - 将 php 变量传输到 javascript 变量

php - array_replace() 与 PHP 中的联合运算符

PHP:如何从数据库中获取相同 ID 的多个复选框值?