将对象更改为数组

时间:2015-10-09 10:54:39

标签: php arrays object

我试图将一个对象更改为数组,但似乎它不能以这种方式工作。有人能告诉我在这种情况下该怎么做吗?

$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类型的对象作为数组”

2 个答案:

答案 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']);

试一试。 如果您需要解释让我知道,我会解释原因。但是,首先检查它是否正常工作。