将 PHP 数组转换为对象的 JSON 数组

Posted

技术标签:

【中文标题】将 PHP 数组转换为对象的 JSON 数组【英文标题】:Convert PHP Array to JSON Array of object 【发布时间】: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 中显示了结果。 【参考方案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);

【讨论】:

以上是关于将 PHP 数组转换为对象的 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章

如何将多维数组转换为json对象[关闭]

php数组转json对象并保留数字索引

PHP json_encode转换空数组为对象

将对象对象转换为对象数组(PHP,Laravel)

把JSON 格式的字符串转换为 PHP数组或对象

如何将简单的php数组转换为带头的json数据