在Codeigniter中访问多维stdClass数组



我想我有一个特殊的情况。我认为我的数组格式是这样的,传统的方法来访问stdClass是不会工作的。

在有人责备我没有检查关于这个主题的帖子(有很多)之前。我想说的是,我已经检查了几乎所有的人,这里有一些链接来证明这一点。

我都读过了。我已经尝试了所有获取数据的建议。到今天为止,他们都没有工作过。

我的数据是这样格式化的:

 Children::__set_state(array(
  'id' => NULL,
  'code' => NULL,
  'accld' => NULL,
  'fname' => NULL,
  'mname' => NULL,
  'lname' => NULL,
  'gender' => NULL,
  'dob' => NULL,
  'class' => NULL,
  'status' => NULL,
  'photo' => NULL,
  'allergies' => NULL,
'0' => 
  stdClass::__set_state(array(
 'id' => '1039',
 'code' => '2383',
 'accId' => '32',
 'fname' => 'Loren',
 'mname' => 'M',
 'lname' => 'Cings',
 'gender' => '2',
 'dob' => '2005-10',
 'class' => '1',
 'status' => '1',
 'photo' => ',
 'allergies' => '',
                     )),
'1' => 
  stdClass::__set_state(array(
 'id' => '1044',
 'code' => '6266',
 'accId' => '32',
 'fname' => 'Justin',
 'mname' => 'R',
 'lname' => 'Cings',
 'gender' => '1',
 'dob' => '2001-11',
 'class' => '15',
 'status' => '11',
 'photo' => ,
 'allergies' => '',
                     )),

我个人的想法是我的数据需要格式化为

    [0] => 
    stdClass::__set_state(array(  .....

因为当我查看所有其他张贴的数组。数组号在方括号和单引号之间。

在我的模型代码中,这是生成数组的东西:

   public function populate($row) {
    foreach ($row as $key => $value) {
        $this->$key = $value;
     }
  }

唯一在这个理论中戳了一个洞的是,因为我有另一个由相同函数生成的数组,它可以用$myarray->value评估它的值。

谢谢你的寻找和你的想法。

我猜出了这个谜语的答案。我不得不回去修改我的模型代码。 从这个:

public function accld($id) {
    $query = $this->db->get_where($this::DB_TABLE, array('accId' => $id));
    $result = $this->populate($query->result());
    return $result;
}

:

public function accld($id) {
    $query = $this->db->get_where($this::DB_TABLE, array('accId' => $id));
    $result = $this->populate($query->result('array'));
    return $result;
}

添加'array'参数转换从

返回的数据

你看到的这个

Children::__set_state(array(
 'id' => NULL,
 'code' => NULL,
 'accld' => NULL,
 'fname' => NULL,
 'mname' => NULL,
 'lname' => NULL,
 'gender' => NULL,
 'dob' => NULL,
 'class' => NULL,
 'status' => NULL,
 'photo' => NULL,
 'allergies' => NULL,
'0' => 
  array (
         'id' => '1161',
         'code' => '1784',
         'accId' => '124',
         'fname' => 'Diane',
         'mname' => '',
         'lname' => 'Gre',
         'gender' => '1',
         'dob' => '2012-6',
         'class' => '18',
         'status' => '7',
         'photo' => 
      ));

那么我就可以用

来遍历它
   foreach($children as $key => $val){ if(!empty($val)){

虽然你知道如何使它工作,我不确定你是否理解为什么。Codeigniter返回一个对象数组,除非您指定它返回一个数组。

例如,如果你收到一个像

这样的数组
$result = array(array('id'=>1,'name'=>'Steve','age'=>22) );

使用'array'参数,如果没有它,可以使用默认格式的对象表示法访问标准代码点火器返回值,例如-您可以像这样访问第一个结果行中的名称

$name = $result[0]->name;

我希望这是有意义的,并为您澄清一点。

相关内容

  • 没有找到相关文章

最新更新