我正在使用CodeIgniter,我在模型中返回了多个值,所以我确实喜欢
return array('true' =>1,'customer_id' => $result->customer_id);
并且在控制器中,我显示为
$true=$result['true'];
$custId=$result['customer_id'];
所以这没有问题。
现在让我们详细讨论
在模型中,我有这个逻辑
//sql query
if ($result) {
if ($result->password_change == 0) {
return array('true' =>1,'customer_id' => $result->customer_id);//multiple returns
}
else{
return $result;
}
}
else{return false;}
在控制器中
$result=$this->Member_model->check_data(parameters);
$true=$result['true'];
$custId=$result['customer_id'];
if ($result) {
if($true == 1){
//some code here
}
else{
//some code here
}
}
else{
}
这是我的第二个代码。
if ($result) {
if ($result - > password_change == 0) {
if ($result - > id == $id) {
return array('true' => 1, 'customer_id' => $result - > customer_id); //return more then 2
} else {
return false;
}
} else {
if ()) // some condition
{
return (array) $result;
} else {
return false;
}
}
} else {
return false;
}
我得到的错误
“消息:不能将stdClass类型的对象用作数组”
因为从条件中返回条件(从模型中)然后它正在工作,但是当它返回其他条件(我是从模型中返回$ result)时,我得到了错误,因为它没有得到$ result ['true']。
希望您能理解我的问题。您能帮我解决这个问题吗?
答案 0 :(得分:1)
您有两个选择。或者:总是返回一个数组,或者返回一个ArrayObject:
在其他情况下,将$result
转换为数组:
//sql query
if ($result) {
if ($result->password_change == 0) {
return array('true' =>1,'customer_id' => $result->customer_id);//multiple returns
}
return (array) $result;
}
return false;
不知道该模型是否在应用程序中的其他任何地方返回结果,我不知道其他代码是否期望$result
是一个对象。转换为数组可能会在其他地方破坏您的代码。让我们将$result
的{{1}}转换为stdClass
:
ArrayObject
此方法将允许您调用//sql query
if ($result) {
if ($result->password_change == 0) {
return array('true' =>1,'customer_id' => $result->customer_id);//multiple returns
}
return new \ArrayObject($result, \ArrayObject::ARRAY_AS_PROPS);
}
return false;
和$result['test']
。
答案 1 :(得分:1)
Yeah, ok this is solution for multiple conditions :
$this->db->select('*'); // Here your column name
$this->db->from('members'); // Table name
$this->db->where($login_access); // Here your condition
$query = $this->db->get();
$result = $query->result_array();
$query = $this->db->get('customer'); // Your code above if condition
$result = $query->result_array(); // Get data in array Format using **result_array()**
if ($result) {
if ($query->num_rows() > 0) { // You have to change condition from **$result['password_change ']** To **$query->num_rows() > 0**
if ($result - > id == $id) { // Also change here condition from **$result - > id** To $result['id']
return array('true' => 1, 'customer_id' => $result['customer_id']); //Also change here from **$result - > customer_id** To $result['customer_id']
} else {
return false;
}
} else {
if () // some condition
{
return $result; // Also Change here from **return (array) $result** To $result
} else {
return false;
}
}
} else {
return false;
}