在foreach循环中访问对象的$ key

蛇人

因为我开始在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';
}
马克西姆·昆潘(Maxim Kumpan)

从数据处理的角度来看,对象和数组看起来几乎相同。您可以简单地添加另一个对象属性并将数据保存到其中,而不必声明该属性(我认为这是一个缺点,但就您而言,这是一个优势)。

大批:

$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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章