数组和对象哪个是最适合输出的数据结构?以及原因


which is most preferrable data structure to get output into, arrays or object ? and why?

输出格式对脚本的整体性能有影响吗?例如,在基于php的cms中,我们有时可以选择输出格式(数组或对象)。

我所知道的两者之间的唯一区别是:

如果我们选择阵列,我们使用

$example['key1'] = $dummydata;

但是如果输出格式是"对象",我们使用

$example->key1 = $dummydata;

这是我们应该选择其中一个选项而不是另一个选项的唯一原因吗?或者还有其他事情需要考虑?这两者之间哪种格式更好?实例这是wordpress的一个代码片段,在这里我们可以选择输出类型

$wpdb->get_row('query', output_type, row_offset);
$sql = "select * from ".$wpdb->prefix."sampletable where user_id =".$user->ID;
$result_set = $wpdb->get_row($sql, ARRAY_A); 

如果只使用stdClass对象,几乎没有任何区别。在这种情况下,我甚至会选择数组,因为它们使用起来更灵活(例如,关键字名称更灵活),而且你有很多功能要使用(数组合并、困难等)

最佳选项是完全OO并将数据结构定义为类。这为您提供了类型安全性、类型暗示性、对象方法等。同样,只有"无类型"的stdClass对象不会提供这些,甚至不会提供数组的丰富功能。

我在Codex中搜索了wordpress output_type和这个页面。

我之前在这个答案中给出的一般对象与数组的论点在这里并不重要。之后一定要考虑您希望如何处理这些数据。如果要编写自己的函数来处理数据,那么数组和对象一样好。

如果您的操作使用了某些对象中的现有逻辑,例如WP_Query,那么无论如何都要使用OBJECT返回类型。

数组不便于重复使用,通常只构建一次,只使用一次对数据保护不友好非默认参考友好公众友好型对象重用友好,您可以在项目中的其他地方使用它数据保护友好默认参考友好