PHP 数组和对象在一起 - 不好/好的做法?

Posted

技术标签:

【中文标题】PHP 数组和对象在一起 - 不好/好的做法?【英文标题】:PHP arrays and objects together - Bad / Good Practice? 【发布时间】:2013-07-04 00:51:07 【问题描述】:

我正在从 mysql 数据库中获取数据。结果以对象的形式返回。

然后我可以像这样访问数据:

$db_data->row

在 foreach 循环中,我通过添加一个数组来更改 $db_data,例如:

foreach ($db_data as $data) $db_data->row->new_data = array('key' => 'value');

现在可以通过以下方式访问新数据:

$db_data->row->new_data['key']

这是好的还是坏的做法?

如果它通常被认为是不好的做法,那么更改数据库对象的正确方法是什么?


编辑:

根据 cmets 我想澄清的问题:

我不想更改数据库中的数据。我在这里所做的是将数据添加到我的 php 应用程序(Laravel 4 btw.)中的数据库类返回的对象中。

所以我的问题是关于将对象与数组一起扔,以及这是好还是坏的做法

【问题讨论】:

如所写,该循环将向对象中的 SAME 键写入一个新数组,覆盖之前的值。 这既不好也不坏,只是实践。但是将数组分配给似乎代表列值的东西似乎很奇怪:这将如何转移到数据库?如果它不转移,那为什么要使用违反直觉的结构呢? 为什么不两者兼而有之? (数组访问对象) @almoullim-dev 感谢您的标签编辑。 @prix 我明白你在那里所做的事情。谢谢:P 【参考方案1】:

在我看来,您将数据存储在写入数据库表中字段的 php 序列化对象中。

如果是这样,这使得在不获取记录并首先对其进行反序列化的情况下访问该数据中的值几乎是不可能的。在某种程度上违背了使用关系数据库的意义。

【讨论】:

在这种情况下,我不会更新获取的数据库表。我只添加使用获取的数据处理的数据,然后将其添加回对象以在 Laravel 4 中的模板(视图)中使用。【参考方案2】:

从我的角度来看 你在做什么没有错 我不认为这是一种不好的做法

我只是认为,如果您知道自己在做什么,就会得到想要的结果 永远不要关心你是怎么做到的,just do it ... ^_^

【讨论】:

是的,我也这么认为,但是对于这个项目,我需要记住其他开发人员稍后会在这个项目上与我合作。 哦,在这种情况下,您必须使用与其他开发人员相同的方法,以免大家感到困惑【参考方案3】:

作为个人意见,我不明白为什么这是一个不好的做法。 在我看来,这取决于您的程序,这是很自然的事情, 它并没有真正引起混乱。

需要注意的一点是$var["key a"]可以做,$obj->key a不能做

【讨论】:

你让我眼前一亮。从未使用过 $var['key a'] 变体。这种表示法的用例是什么? 好吧,有时数组中的键可以有空格,我也没有使用过,但它是有效的代码,在某些情况下,在对象和数组之间进行选择时必须考虑它 嗯,好的,今晚有空的时候会查找更多关于此的信息:) 如果有用的话记得选择答案:)

以上是关于PHP 数组和对象在一起 - 不好/好的做法?的主要内容,如果未能解决你的问题,请参考以下文章

为啥用变量调用数组索引是不好的做法?

缓存 PHP 数组

PHP不定维数组去除空值

PHP XML 到具有属性和值的数组/对象

将REST和RPC混合在一起是不好的做法?

当我尝试从 PHP 对象/数组返回值时,出现 500 错误。但是可以返回所有对象