将 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 数组的主要内容,如果未能解决你的问题,请参考以下文章