键入将多维对象数组转换为多维数组

时间:2015-04-19 16:57:41

标签: php arrays multidimensional-array

我从函数

返回了以下对象
stdClass::__set_state(array(
   0 => 
  stdClass::__set_state(array(
     'term_id' => '175',
     'name' => 'a term',
     'slug' => 'a-term',
     'term_group' => '0',
     'term_taxonomy_id' => '177',
     'taxonomy' => 'category',
     'description' => '',
     'parent' => '174',
     'count' => '1',
  )),
   1 => 
  stdClass::__set_state(array(
     'term_id' => '182',
     'name' => 'aciform',
     'slug' => 'aciform',
     'term_group' => '0',
     'term_taxonomy_id' => '184',
     'taxonomy' => 'category',
     'description' => '',
     'parent' => '0',
     'count' => '1',
  )),
))

如果我将此类型转换为数组,我会得到以下内容

array (
  0 => 
  stdClass::__set_state(array(
     'term_id' => '175',
     'name' => 'a term',
     'slug' => 'a-term',
     'term_group' => '0',
     'term_taxonomy_id' => '177',
     'taxonomy' => 'category',
     'description' => '',
     'parent' => '174',
     'count' => '1',
  )),
  1 => 
  stdClass::__set_state(array(
     'term_id' => '182',
     'name' => 'aciform',
     'slug' => 'aciform',
     'term_group' => '0',
     'term_taxonomy_id' => '184',
     'taxonomy' => 'category',
     'description' => '',
     'parent' => '0',
     'count' => '1',
  )),
)

问题是,我还需要将内部对象类型转换为数组。我可以通过使用foreach循环来执行此操作,然后键入将每个值转换为数组并构建一个新数组,如

foreach ($a as $b) {
    $c[] = (array) $b;
}
?><pre><?php var_dump($c); ?></pre><?php    

它确实给了我想要的东西

array(75) {
  [0]=>
  array(9) {
    ["term_id"]=>
    string(3) "175"
    ["name"]=>
    string(6) "a term"
    ["slug"]=>
    string(6) "a-term"
    ["term_group"]=>
    string(1) "0"
    ["term_taxonomy_id"]=>
    string(3) "177"
    ["taxonomy"]=>
    string(8) "category"
    ["description"]=>
    string(0) ""
    ["parent"]=>
    string(3) "174"
    ["count"]=>
    string(1) "1"
  }
  [1]=>
  array(9) {
    ["term_id"]=>
    string(3) "182"
    ["name"]=>
    string(7) "aciform"
    ["slug"]=>
    string(7) "aciform"
    ["term_group"]=>
    string(1) "0"
    ["term_taxonomy_id"]=>
    string(3) "184"
    ["taxonomy"]=>
    string(8) "category"
    ["description"]=>
    string(0) ""
    ["parent"]=>
    string(1) "0"
    ["count"]=>
    string(1) "1"
  }
}

我的PHP知识仍然非常有限,我需要知道的是,还有另一种更短的更好的方法来实现这一点,或者这是唯一的方法。

额外背景

  • 我不能不幸地改变了函数的输出。这是Wordpress中的一个函数,它只返回一个对象对象,并且没有返回值数组数组的选项

  • 我需要搜索特定的term_id并返回其位置。同样,我可以使用foreach循环执行此操作,但PHP 5.5 +具有函数array_column,您可以使用array_search来搜索特定值(在本例中为{{1}在多维数组中并返回该特定数组的键。

1 个答案:

答案 0 :(得分:2)

我使用json_encodejson_decode

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

或快速进行:

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

它非常快,适用于所有维度。