我发现自己在使用 couchDB 和 Ajax 的 PHP 应用程序中一直在数组和对象之间进行转换。当然,我也将对象转换为 JSON 并返回(有时用于 couchdb,但主要用于 Ajax),但这并不会影响我的工作流程。
目前,我有由我使用的 CouchDB 模块返回的 php 对象,另一方面,我有返回数组的老习惯,例如 array("error"=>"not found","data"=> $dataObj) 来 self 的函数。这导致真实的 php 对象和嵌套数组混合出现,如果需要,我使用 (object) 或 (array) 进行转换。最糟糕的是,我或多或少地知道函数返回什么,但不知道什么类型(数组或对象),所以我经常遇到类型错误。
我现在的计划是在从函数返回之前始终将数组转换为对象。当然,这意味着需要进行大量重构。
这是正确的方法吗?转换开销如何?其他想法或提示?
编辑: Kenaniah 的回答建议我应该换一种方式,这意味着我会将所有内容都转换为数组。对于所有 Ajax/JSON 内容以及 CouchDB,我会使用
$myarray = json_decode($json_data,$assoc = true); //EDIT: changed to true, whcih is what I really meant
更改所有 CouchDB 和 Ajax 函数的工作量更大,但最终我有了更好的代码。
最佳答案
一般来说,您应该始终使用数组,除非有充分的理由使用对象。在 PHP 中使用对象而不是数组的唯一充分理由是,如果您需要某种数组不提供的数据功能(例如私有(private)/ protected 变量、方法、对象魔法、定义的结构等)。如果您严格处理数据,数组格式更好,因为您可以使用 PHP 的大量 array functions 轻松操作数据。 (没有双关语意)。
更新:
如果您所做的只是在两点之间传递数据,那么数组更适合该用途。唯一的原因(据我所知)人们会在数组上使用对象作为纯粹的数据容器是接收方是否需要有保证的格式(想想接口(interface)等)。
据我所知,您应该从 CouchDB 返回数组以避免必须完全转换。
关于php - 我应该在 CouchDB/Ajax 应用程序中使用 PHP 中的数组还是对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2923415/