我试图将一个对象更改为数组,但似乎它不能以这种方式工作。有人能告诉我在这种情况下该怎么做吗?
$blockedNumber = DB::select('SELECT COUNT(*) AS number FROM users_blocked WHERE (f_block = ? OR f_chat_block = ? OR f_hide_posts = ?)', array(1, 1, 1));
$number = (array) $blockedNumber;
var_dump($number[0]['number']);
var_dump显示“无法使用stdClass类型的对象作为数组”
答案 0 :(得分:0)
$obj = new stdClass();
$objB = new stdClass();
$objB->deepFoo = 'bar';
$obj->bla = array(1,2,3,$objB);
$obj->blub = new stdClass();
$obj->blub->foo = 'bar';
function rekursiveObjectToArray($obj){
if(is_object($obj)){
$obj = (array)$obj;
}
if(is_array($obj)){
$obj = array_map('rekursiveObjectToArray',$obj);
}
return $obj;
}
$obj = rekursiveObjectToArray($obj);
var_dump($obj);
答案 1 :(得分:0)
从您的回复中,您可以执行此操作,它将解决此问题。
$blockedNumber = DB::select('SELECT COUNT(*) AS number FROM users_blocked WHERE (f_block = ? OR f_chat_block = ? OR f_hide_posts = ?)', array(1, 1, 1));
$number = (array) $blockedNumber[0];
var_dump($number['number']);
试一试。 如果您需要解释让我知道,我会解释原因。但是,首先检查它是否正常工作。