【问题标题】:Convert PHP Array to JSON Array of object将 PHP 数组转换为对象的 JSON 数组
【发布时间】:2017-09-13 20:53:04
【问题描述】:

我在我的项目中使用Google Orgchart。我从 PHP 文件返回 JSON OBJECT

问题

我的问题是当我对值进行硬编码时,它工作正常。当我从 PHP 文件返回数据时。它不起作用。我猜从 PHP 文件返回的数据格式不正确。文件如下。

$result = mysql_query("SELECT * FROM emp"); 
    while($row = mysql_fetch_array( $result )) {
        $arr1 = array(
            'v' => $row['name'],
            'f' => $row['name']+'<div style="color:red; font-style:italic">President</div>',
            '' => $row['rep'],
            '' => $row['des'],
        );
        array_push($dataarray, $arr1);
    }

echo json_encode($dataarray);

返回如下对象

应该如何

下面是我的硬线JSON OBJECT

   [
      [{v:'Prabhkar', f:'Prabhkar<div style="color:red; font-style:italic">President</div>'},
       '', 'The President'],
      [{v:'Raguram', f:'Raguram<div style="color:red; font-style:italic">GM</div>'},
       'Prabhkar', 'GM']
    ]

控制台截图如下:

我是否需要在 PHP 文件中再创建一个数组。我想如何根据上面的屏幕截图更改 PHP 数组。对不起我的英语不好。谢谢。

【问题讨论】:

  • 显示您得到的 JSON 输出 echo json_encode($dataarray);.. 另外,最初存储在 $dataarray 中的是什么?
  • @ObjectManipulator,我已经解析了来自$dataarray 的数据,并在屏幕截图res 中显示了结果。

标签: php arrays json orgchart


【解决方案1】:

你的内部结构是错误的。您的内部结构是一个数组,第一个是映射,后跟两个值。您当前的实现是一个数组,只有一个地图。

$result = mysql_query("SELECT * FROM emp"); 
    while($row = mysql_fetch_array( $result )) {
        $arr1 = array(
            array(
                'v' => $row['name'],
                'f' => $row['name'] . '<div style="color:red; font-style:italic">President</div>',
            ),
            $row['rep'],
            $row['des']);
        array_push($dataarray, $arr1);
    }

echo json_encode($dataarray);

【讨论】:

    【解决方案2】:

    您需要将 'v' 和 'f' 包装在一个数组中,然后将其他值推送到父数组。

    $result = mysql_query("SELECT * FROM emp"); 
        while($row = mysql_fetch_array( $result )) {
            $arr1 = array(
                array(
                    'v' => $row['name'],
                    'f' => $row['name'] . '<div style="color:red; font-style:italic">President</div>'
                ),
                $row['rep'],
                $row['des']
            );
            array_push($dataarray, $arr1);
        }
    
    echo json_encode($dataarray);
    

    【讨论】:

      【解决方案3】:

      在您的硬编码数组中,第一个键内部有一个数组,因此您必须像这样更改代码

      $result = mysql_query("SELECT * FROM emp"); 
      $dataarray = [];
      while($row = mysql_fetch_array( $result )) {
          $arr1 = array(
              array(
                    'v'=> $row['name'], 
                    'f' => $row['name'].'<div style="color:red; font-style:italic">President</div>',),
              $row['rep'],
              $row['des'],
          );
          array_push($dataarray, $arr1);
      }
      
      echo json_encode($dataarray);
      

      【讨论】:

        猜你喜欢
        • 2014-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-19
        • 2013-08-28
        • 1970-01-01
        相关资源
        最近更新 更多