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

时间:2017-04-18 06:23:30

标签: php arrays json orgchart

我在我的项目中使用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);

返回如下所示的对象

enter image description here

应该如何

我的下面的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']
    ]

下面的控制台截图:

enter image description here

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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 :(得分:1)

在你的硬编码数组中,第一个键里面有一个数组,所以你必须像这样更改你的代码

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