在處理數組時,使用array_keys()來獲取數組的鍵是微不足道的。在處理對象時,我們還有其他函數,如get_object_vars()來處理這些。因此,如果我們有兩個簡單的變量,一個數組和一個對象:+--------------------+---------------------------+| Array | Object |+--------------------+---------------------------+| $array = array( | $object = new stdClass(); || 'foo' => 'bar', | || 'john' => 'doe', | $object->foo = 'bar'; || 'beep' => 'bop' | $object->john = 'doe'; || ); | $object->beep = 'bop'; |+--------------------+---------------------------+如果我們獲取該函數并將其傳遞給數組,它將執行我們期望的操作,并給我們一個帶有 、 和 的數組:array_keys()foojohnbeepReturn: array(3) { [0]=> string(3) "foo" [1]=> string(4) "john" [2]=> string(4) "beep"}當然,正如預期的那樣,如果我們將對象傳遞給它,函數就會爆炸并且不知道該如何處理它(如果我們真的需要,我們可以轉換甚至只是將其類型轉換為數組):Return: NULLWARNING array_keys() expects parameter 1 to be array, object given但是,如果我們一次處理一個密鑰,它似乎會變得更有趣一些。使用PHP的key()函數,我們可以提取我們想要的任何密鑰。key($array); //returns: string(3) "foo"key($object); //returns: string(3) "foo"// If we move the internal pointerend( $array ); // key($array) returns: string(4) "beep"end( $object ); // key($object) returns: string(4) "beep"查看 key() 函數的文檔,如果使用了 ,這不應該引發警告嗎?我問是因為我很好奇,最近被否決了,并被告知不要在物體上使用。通常我使用其他方法,但在某些情況下使用沒有警告(或錯誤) - 所以我決定查看,文檔沒有說任何關于允許,只是。我想類似的事情可以說數組指針的功能像.objectkey()key()objectarray &$arrayend()
1 回答

偶然的你
TA貢獻1841條經驗 獲得超3個贊
來自: https://www.php.net/manual/en/language.types.array.php
如果將對象轉換為數組,則結果是一個數組,其元素是該對象的屬性。鍵是成員變量名稱,但有一些值得注意的例外:整數屬性不可訪問;私有變量在變量名稱前面附加類名;受保護的變量在變量名稱前面附加了“*”。這些預置值在兩端都有空字節。這可能會導致一些意外行為
因此,在某些情況下,依賴在轉換中未發生突變的鍵應被視為不可靠。
此外,根據給定的屬性是否為 //,您可能無法獲得預期的回報。public
protected
private
https://www.php.net/manual/en/function.get-object-vars.php#47075
- 1 回答
- 0 關注
- 100 瀏覽
添加回答
舉報
0/150
提交
取消