я использую 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, вы можете просто изменить и косвенно повлиять на него, используя такие функции PHP, end
, reset
, each
и т. д. Это необходимо для того, чтобы эти функции работали; в противном случае вы не можете перебрать массив, используя next()
потому что где бы он запомнил, что такое «следующая» запись?
Других решений пока нет …