33
A
回答
41
這並不完全正確。
get_object_vars
範圍是敏感的,將返回所有可見性能以外靜態性質不論其visbility的。如果你從課外來電話,你只會得到公衆成員;從派生類中,您將獲得受保護的和公共成員;並從課堂本身,你會得到所有的成員。數組鍵表示屬性名稱,並且沒有被損壞。
(array)
強制返回,至少在PHP 5.3.0上返回所有對象屬性public和other。
public
:屬性的名稱是根據其保護級別錯位不缺胳膊少腿,相同屬性名稱protected
:物業鍵名始於一個*
private
:物業鍵名以類名開頭
請參閱casting to an array瞭解更多信息。
我希望你能更好地理解哪一個最適合你的情況。
2
get_object_vars()
函數是實現所需效果的更清晰的方法。儘管將它轉換爲數組也是一種解決方案,但在更高版本的PHP中,此行爲可能會發生變化。
我不知道兩個方法之間是否存在實際差異,但上面的參數會導致我使用該函數。
+2
爲什麼數組的性能不如函數可靠?你有支持它的文檔嗎? – zneak 2010-03-24 23:50:57
1
更好的是你實際需要的是什麼。 get_object_vars()不顯示私有和受保護的成員。請參閱本手冊中的this comment。
相關問題
- 1. 強制轉換爲Python ctypes數組
- 2. 強制將sql.ColumnName強制轉換爲
- 3. 這個對象是強制轉換還是數組強制轉換?
- 4. Sql強制轉換爲xml,然後運行.value強制轉換
- 5. ValidationError:強制轉換爲ObjectID
- 6. 強制轉換爲函數指針?
- 7. 將int函數強制轉換爲void *
- 8. 將空JSON數組強制轉換爲字典類型
- 9. 強制JSON.NET將xml轉換爲json數組
- 10. C#將數組強制轉換爲元素類型
- 11. Dataweave XML-XML轉換「無法強制將a:數組轉換爲:字符串」。
- 12. PHP:get_class_vars()與get_object_vars()
- 13. 如何強制仿函數應用於強制轉換參數
- 14. 強制轉換爲特定類型
- 15. '*'不能被強制轉換爲Fixnum(TypeError)
- 16. Edge.js強制轉換爲字符串expandoobject
- 17. 複雜*無法強制轉換爲
- 18. 在awk中強制轉換爲int
- 19. 的java.util.HashMap無法強制轉換爲org.apache.axiom.om.OMElement
- 20. UICollectionViewLayout子類強制轉換爲子類
- 21. 將shared_ptr強制轉換爲void *
- 22. 將NSURL **強制轉換爲CFURLRef *
- 23. MSVC++類強制轉換爲struct
- 24. 無法將ToolStripItem強制轉換爲MenuItem
- 25. JSDoc爲`window`強制類型轉換?
- 26. json_extract_path_text強制轉換爲int錯誤
- 27. org.jdesktop.swingbinding.JTableBinding $ BindingTableModel無法強制轉換爲javax.swing.table.DefaultTableModel
- 28. 將Windows.Controls.UserControl強制轉換爲Windows.Forms.Control
- 29. 字符串強制轉換爲int
- 30. 強制IKVMC將JAR轉換爲DLL?
對於'(array)'強制類型,爲私有成員添加'*',私有成員的* classname *將被包含在空字節('\ x00')中,所以嚴格來說就是'\ x00 * \ x00 '對於受保護的成員,對於私人成員也是如此:'\ x00className \ x00'。相關:** [數組到對象和數組在PHP中 - 有趣的行爲](http://stackoverflow.com/questions/6325447/array-to-object-and-object-to-array-in-php-interesting -behaviour/6325631#6325631)** – hakre 2011-07-09 09:33:48
另一個區別(至少在PHP 5中):使用'get_object_vars',如果鍵是數字,鍵將被轉換爲int,其中cast會返回字符串索引:https://3v4l.org/ 2Wb9j – Sherbrow 2016-08-30 15:24:03