2015-01-21 61 views
5

我正在使用end()將數組的內部指針設置爲其最後一個元素。然後我使用key()來獲取最後一個元素的關鍵字。什麼是PHP中的數組內部指針?

例如:

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

,我不知道的唯一的事情就是一個數組的內部指針準確。有人可以向我解釋嗎?我一直在嘗試,但無法找到解釋。

另外,如何設置數組的內部指針會影響該數組?

+3

[相關的好閱讀](http://nikic.github.io/2012/03/28/Understanding-PHPs-internal-array-implementation.html)。 – kojiro 2015-01-21 04:04:00

回答

10

在C語言中,「後臺」有一個內部的「數組」實現,用C語言編寫。該實現定義了數組數據實際存儲在內存中的細節,數組如何操作以及如何訪問等。這個C實現的一部分是一個「數組指針」,它只是指向數組的一個特定索引。在非常簡單的PHP代碼,它是這樣的:

class Array { 

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

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

} 

您不必從PHP代碼數組指針直接訪問,你可以修改或間接使用像end PHP函數影響它,reseteach等。這些功能是必要的;否則你不能迭代使用next()的數組,因爲它會在哪裏記住「下一個」條目是什麼?

+1

有趣的,如果你不知道這一點,並開始在同一個數組的循環內循環數組。 – 2017-05-23 09:46:04

相關問題