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

时间:2015-01-21 03:57:17

标签: php arrays terminology

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

例如:

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

我唯一不理解的是数组的内部指针是。有人可以向我解释一下吗?我一直在尝试,但无法找到解释。

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

1 个答案:

答案 0 :(得分:14)

"数组"的内部实现在PHP"幕后花絮#34;用C语言编写。这个实现定义了数组数据实际存储在内存中的细节,数组的行为方式,访问方式等等。这个C实现的一部分是一个"数组指针",它只是指向数组的特定索引。在非常简化的PHP代码中,它是这样的:

class Array {

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

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

}

您无法从PHP代码直接访问此数组指针,您只需使用endreseteach等PHP函数间接修改和影响它。使这些职能有效的必要条件;否则你不能使用next()迭代一个数组,因为它会记住" next"进入是吗?