【问题标题】:Convert stdClass object to associative array in php在php中将stdClass对象转换为关联数组
【发布时间】:2016-03-29 11:26:28
【问题描述】:

我需要转换这个数组

Array ( 
[0] => stdClass Object 
     ( [title] => primo ) 
[1] => stdClass Object 
     ( [title] => secondo )) 

Array ( 
[primo] => primo
[secondo] => secondo ) 

尝试了不同的选项,包括类型转换,仍然没有找到正确的解决方案

【问题讨论】:

  • 如果我使用 json 函数我得到这个数组 Array ( [0] => Array ( [title] => primo ) [1] => Array ( [title] => secondo ) )跨度>
  • 它是一个对象数组合并到一个关联数组中,而不只是一个对象到一个数组中,可能不是重复的

标签: php arrays stdclass


【解决方案1】:

使用json_encode()json_decode()

$arr = json_decode(json_encode($yourObject), TRUE);

json_decode() 的第二个参数设置为TRUE

函数定义:

混合 json_decode (string $json [, bool $assoc = false [, int $depth > = 512 [, int $options = 0 ]]])

这会将您的对象转换为关联数组。

【讨论】:

  • 简单的解决方案是我爱你 Stackoverflow 的原因!
【解决方案2】:

最后我做到了:

$options = array('' => '<select>');
$results = $query->execute()->fetchAll();
foreach($results as $id => $node) {
  $value = $node->title;
  $options[$value] = $value;
}

感谢大家的回答

【讨论】:

    【解决方案3】:

    请检查此代码,我还没有调试过...

    $array = array_values($array);
    $new_array = array();
    foreach($array as $row){
       $new_array[$row['title']] = $row['title'];
    }
    

    【讨论】:

      【解决方案4】:
      $final_array = array();
      
      foreach ($items as $item)
      {
          $final_array = array_merge($final_array, json_decode(json_encode($item), true);
      }
      

      $items 是数组的名称。 应该遍历您的对象数组,将该对象转换为关联数组,并将其合并到$final_array

      【讨论】:

        【解决方案5】:

        只需使用array_walk like as

        $result = array();
        array_walk($arr,function($v)use(&$result){ 
              $result[$v->title] = $v->title;
        });
        print_r($result);
        

        【讨论】:

          【解决方案6】:

          盲答题主,可以通过简单的强制转换实现对象到关联数组的转换:

          $array = (array) $object;
          

          但是,在所讨论的示例中,基本操作可以帮助生成所需的数据结构,而无需使用任何内置函数:

          $array = [];
          foreach ($arrayOfObjects as $object) {
              $title = $object->title ?? null;
              if (!is_null($title)) {
                  $array[$title] = $title;
              }
          }
          

          【讨论】:

          • 你确定吗?我认为对象数组不会被强制转换为键设置为对象的任意元素的数组
          • 我并没有试图回答问题作者提出的具体案例,因为没有内置函数。有无限的数据结构,我们无法创建预定义的方法来满足所有需求。我只是想分享一个提示,如果有人查找主题的标题,社区可以使用它。
          猜你喜欢
          • 2013-10-29
          • 2011-11-08
          • 2011-05-19
          • 1970-01-01
          • 2011-04-30
          • 1970-01-01
          相关资源
          最近更新 更多