Что такое внутренний указатель массива в PHP?

я использую end() установить внутренний указатель массива на его последний элемент. Тогда я использую key() чтобы получить ключ этого последнего элемента.

Например:

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

Единственное, что я не понимаю, это то, что внутренний указатель массива является именно так. Может кто-нибудь объяснить это мне? Я пытался, но не могу найти объяснение.

Кроме того, как установка внутреннего указателя массива влияет на этот массив?

6

Решение

Есть внутренняя реализация для «массивов» в PHP «за кулисами», написанная на C. Эта реализация определяет детали того, как данные массива фактически хранятся в памяти, как ведут себя массивы, как к ним можно получить доступ и т. Д. Часть этого C Реализация — это «указатель массива», который просто указывает на определенный индекс массива. В очень упрощенном PHP-коде это выглядит примерно так:

class Array {

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

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

}

У вас нет прямого доступа к этому указателю массива из кода PHP, вы можете просто изменить и косвенно повлиять на него, используя такие функции PHP, end, reset, each и т. д. Это необходимо для того, чтобы эти функции работали; в противном случае вы не можете перебрать массив, используя next()потому что где бы он запомнил, что такое «следующая» запись?

14

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]