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

Convert PHP Array to JSON Array of object

我在我的项目中使用 Google Orgchart。因为我正在 returning JSON OBJECT 来自 PHP 文件。

问题

我的问题是当我对值进行硬编码时,它工作正常。当我从 PHP 文件中 return 数据时。它不起作用。我猜 returning 来自 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);

哪个 returns 对象如下所示

应该怎样

我的硬编码 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 数组。对不起我的英语不好。谢谢。

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

$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);

您需要将 '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);

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

$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);