因为我开始在OOP中编写更多代码,所以我总是遇到“代码样式”问题。我想向现有对象添加一些其他数据。当我使用数组时,使用foreach很容易实现,因为每个数组项都有自己的密钥。现在,对于对象,我没有找到一种方法来使用钥匙访问每个项目。
$data_items = $this->model->get_function();
$data_items = (array) $data_items;
foreach ($data_items as $key => $row)
{
$data_items[$key]['additional_data'] = 'additional_data';
}
$data_items = (object) $data_items;
我认为我的代码只是解决方法。请问有人可以告诉我是否可以摆脱代码行“ $ data_items =(array)$ data_items;”。和“ $ data_items =(对象)$ data_items;”。
感谢所有回答我的问题的人!
直到现在,我还没有意识到我尝试实现的目标如此简单:
foreach ($data_items as $row)
{
$row->additional_data = 'additional_data';
}
从数据处理的角度来看,对象和数组看起来几乎相同。您可以简单地添加另一个对象属性并将数据保存到其中,而不必声明该属性(我认为这是一个缺点,但就您而言,这是一个优势)。
大批:
$arr = array();
$arr['additional_data'] = 'foo';
目的:
$obj = new stdClass;
$obj->additional_data = 'bar';
Foreach处理对象属性的方式与处理数组键的方式相同。无需隐式转换。
这是免转换的变体:
$data_items = $this->model->get_function();
foreach ($resource_contacts as $key => $row)
{
// Note, $data_items->{$key} must be an object, or this will crash.
// You can check if it is with is_object() and react accordingly
$data_items->{$key}->additional_data = 'additional_data';
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句