我想我有一个特殊的情况。我认为我的数组格式是这样的,传统的方法来访问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;
我希望这是有意义的,并为您澄清一点。