Php 无法在一个数组中转换两个表
我希望格式如下所示:Php 无法在一个数组中转换两个表,php,json,Php,Json,我希望格式如下所示: { "result": [ { "Owner_ID": "1", "Owner_Name": "King", "Owner_IC": "997788-01-9267", "Owner_Contact": "012-34567890", "Owner_AccNum" : "124914848238902", "Car": {
{
"result": [
{
"Owner_ID": "1",
"Owner_Name": "King",
"Owner_IC": "997788-01-9267",
"Owner_Contact": "012-34567890",
"Owner_AccNum" : "124914848238902",
"Car": {
"Car_ID": "1",
"Car_Name": "Aston Martin",
"Car_Plate": "P 1"
"Car_Color": "Red",
"Car_Hour": "6",
"Car_Day": "150",
},
{
"Car_ID": "2",
"Car_Name": "Sonata",
"Car_Plate": "S 1234"
"Car_Color": "Red",
"Car_Hour": "10",
"Car_Day": "200",
}
},
{
"Owner_ID": "2",
"Owner_Name": "Dragon",
"Owner_IC": "962738-98-8345",
"Owner_Contact": "019-86427613",
"Owner_AccNum" : "124914848238902",
"Car": {
"Car_ID": "3",
"Car_Name": "Lambo",
"Car_Plate": "L 104"
"Car_Color": "Blue",
"Car_Hour": "9",
"Car_Day": "180",
}
这是我的代码:
<?php
define('HOST','host');
define('USER','username');
define('PASS','password');
define('DB','database');
$con = mysqli_connect(HOST,USER,PASS,DB);
$sqls = "SELECT a.*, b.* FROM Car a, Owner b WHERE a.Owner_ID = b.Owner_ID";
$ress = mysqli_query($con, $sqls);
$results = array();
if(! $ress )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysqli_fetch_array($ress)){
array_push($results,
array('Owner_ID'=>$row[0],
'Owner_Name'=>$row[1],
'Owner_IC'=>$row[2],
'Owner_Contact'=>$row[3],
'Owner_AccNum'=>$row[4],
'Owner_Password'=>$row[5],
'Car_ID'=>$row[6],
'Car_Name'=>$row[7],
'Car_Plate'=>$row[8],
'Car_Color'=>$row[9],
'Car_Hour'=>$row[10],
'Car_Day'=>$row[11],
));
}
echo json_encode(array("result"=>$results));
mysqli_close($con);
?>
我不知道要改变什么,以及如何制作一个成功的代码,使它看起来像那种格式。我有一个错误“无法获取数据:”。
对不起,我英语不好
array_push($results,
array('Owner_ID'=>$row[0],
'Owner_Name'=>$row[1],
'Owner_IC'=>$row[2],
'Owner_Contact'=>$row[3],
'Owner_AccNum'=>$row[4],
'Owner_Password'=>$row[5],
));
$results['car'] = array( 'Car_ID'=>$row[6],
'Car_Name'=>$row[7],
'Car_Plate'=>$row[8],
'Car_Color'=>$row[9],
'Car_Hour'=>$row[10],
'Car_Day'=>$row[11],
);
以这种方式使用它会起作用的试试这个,它会起作用的
$results = array();
while ($row = mysqli_fetch_array($ress)) {
$index = array_search($row[0], array_column($results, 'Owner_ID'));
if ($index !== FALSE) {
$results[$index]['Car'][] = array(
'Car_ID' => $row[6],
'Car_Name' => $row[7],
'Car_Plate' => $row[8],
'Car_Color' => $row[9],
'Car_Hour' => $row[10],
'Car_Day' => $row[11]
);
} else {
$results[] = array('Owner_ID' => $row[0],
'Owner_Name' => $row[1],
'Owner_IC' => $row[2],
'Owner_Contact' => $row[3],
'Owner_AccNum' => $row[4],
'Owner_Password' => $row[5],
'Car' => array(
array(
'Car_ID' => $row[6],
'Car_Name' => $row[7],
'Car_Plate' => $row[8],
'Car_Color' => $row[9],
'Car_Hour' => $row[10],
'Car_Day' => $row[11]
)
)
);
}
当前出现了什么错误?如果1个所有者id有两个汽车数据,那么代码是如何工作的?您希望使用$results['car'][]=array()动态管理它//你的阵列完成了它的工作。我真的很感激你的回答。但是$results['car']必须更改为$results[],谢谢您的回答。您的代码非常有用,但我无法在php中使用array_列。但当我将其更改为array_map时,它会显示我想要的输出。但是它在使用数组映射时出错