4

我有一个像下面这样的数组(数组 1),我需要从中删除 stdClass,就像下面的数组一样。2. 目前我正在使用 foreach 循环进行操作,有没有更好的方法来做到这一点而无需循环?

阵列 1 号

array(3) {
  [0] => object(stdClass)#169 (4) {
    ["id"] => string(2) "59"
    ["name"] => string(13) "test"
    ["email"] => string(21) "abc@abc.com"
    ["telephone"] => string(20) "898998989"
  }
  [1] => object(stdClass)#190 (4) {
    ["id"] => string(2) "58"
    ["name"] => string(13) "test"
    ["email"] => string(21) "abc@abc.com"
    ["telephone"] => string(8) "71877858"
  }
  [2] => object(stdClass)#193 (4) {
    ["id"] => string(2) "34"
    ["name"] => string(9) "test"
    ["email"] => string(22) "abc@abc.com"
    ["telephone"] => string(13) "3189028092139"
  }
}

阵列 2 号

array(3) {
  [0] => array(4) {
    ["id"] => string(2) "62"
    ["name"] => string(5) "test"
    ["email"] => string(22) "abc@abc.com"
    ["telephone"] => string(10) "898998989"
  }
  [1] => array(4) {
    ["id"] => string(2) "59"
    ["name"] => string(13) "test"
    ["email"] => string(21) "abc@abc.com"
    ["telephone"] => string(20) "71877858"
  }
  [2] => array(4) {
    ["id"] => string(2) "58"
    ["name"] => string(13) "test"
    ["email"] => string(21) "abc@abc.com"
    ["telephone"] => string(8) "3189028092139"
  }
}

这就是我所做的(铸造)

foreach($moderationContacts as $contact)
{
    $contacts[] = (array)$contact;
}
4

2 回答 2

9

尝试

$array = json_decode( json_encode($array), true);

编辑:我已经测试了这个案例,它有效:

$stdClass= new stdClass();
$stdClass->test = "foo";
$array = Array(
    "a" => Array("b","c"),
    "d" => $stdClass
);

$array = json_decode( json_encode($array), true);

var_dump($array);

输出

array
  'a' => 
    array
      0 => string 'b' (length=1)
      1 => string 'c' (length=1)
  'd' => 
    array
      'test' => string 'foo' (length=3)
于 2013-05-07T13:36:35.140 回答
3

你可以试试

$array = array_map(function ($v) {
    return (array) $v ; // convert to array 
}, $array);

或者,如果此数据来自json使用

$array = json_decode($data,true);
于 2013-05-07T13:36:22.293 回答