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