用于json输出的php嵌套数组
我在3个表上运行查询,并尝试将结果格式化为嵌套数组。是内部阵列让我难堪。sizes数组应在beer数组对象中,但在其外部。谢谢你的帮助 JSON PHP用于json输出的php嵌套数组,php,arrays,json,Php,Arrays,Json,我在3个表上运行查询,并尝试将结果格式化为嵌套数组。是内部阵列让我难堪。sizes数组应在beer数组对象中,但在其外部。谢谢你的帮助 JSON PHP 你似乎在某个时候误入歧途,从那一刻起就错了 $result = $func->getBrewers(); $json_response = array(); while ($row = mysqli_fetch_array($result)) { $row_array = array( 'brewerId'
你似乎在某个时候误入歧途,从那一刻起就错了
$result = $func->getBrewers();
$json_response = array();
while ($row = mysqli_fetch_array($result))
{
$row_array = array(
'brewerId' => $row['brewerId'],
'brewerName' => $row['brewerName'],
'beers' => array()
);
$brewer_pk = $row['brewerId'];
$beer_qry = $func->getBeers($brewer_pk);
while ($beer_fet = mysqli_fetch_array($beer_qry))
{
$tmp = array(
'beerid' => $beer_fet['beerid'],
'productName' => $beer_fet['productName'],
'ibu' => $beer_fet['ibu'],
'abc' => $beer_fet['abv'],
'notes' => $beer_fet['notes'],
'style' => $beer_fet['style'],
'sizes' => array()
);
$beer_pk = $tmp['beerid'];
$size_qry = $func->getSizes($beer_pk);
while ($size_fet = mysqli_fetch_array($size_qry))
{
$tmp['sizes'][] = array(
'beerId' => $size_fet['beerId'],
'size' => $size_fet['size'],
);
}
$row_array['beers'][] => $tmp;
}
array_push($json_response, $row_array);
}
echo json_encode($json_response);
为了在某种程度上简化引用,我重写了将在$tmp
变量中创建的啤酒,该变量现在还有一个'size'
数组,其中将附加各种大小。
添加啤酒和尺寸后,$tmp
将添加到啤酒中
请注意,您现在将执行更多的数据库查询,因为它现在(根据请求)将获取每杯啤酒的大小,而不仅仅是最后一杯啤酒的大小。这种方法的性能和可伸缩性非常耗时。在解析返回的行时,运行单个联接查询并构建嵌套。
$result = $func->getBrewers();
$json_response = array();
while ($row = mysqli_fetch_array($result))
{
$row_array = array();
$row_array['brewerId'] = $row['brewerId'];
$row_array['brewerName'] = $row['brewerName'];
$row_array['beers'] = array();
$brewer_pk = $row['brewerId'];
$beer_qry = $func->getBeers($brewer_pk);
while ($beer_fet = mysqli_fetch_array($beer_qry))
{
$row_array['beers'][] = array(
'beerid' => $beer_fet['beerid'],
'productName' => $beer_fet['productName'],
'ibu' => $beer_fet['ibu'],
'abv' => $beer_fet['abv'],
'notes' => $beer_fet['notes'],
'style' => $beer_fet['style'],
);
$beer_pk = $beer_fet['beerid'];
$size_qry = $func->getSizes($beer_pk);
while ($size_fet = mysqli_fetch_array($size_qry))
{
$row_array['sizes'][] = array(
'beerId' => $size_fet['beerId'],
'size' => $size_fet['size'],
);
}
}
array_push($json_response, $row_array);
}
echo json_encode($json_response);
$result = $func->getBrewers();
$json_response = array();
while ($row = mysqli_fetch_array($result))
{
$row_array = array(
'brewerId' => $row['brewerId'],
'brewerName' => $row['brewerName'],
'beers' => array()
);
$brewer_pk = $row['brewerId'];
$beer_qry = $func->getBeers($brewer_pk);
while ($beer_fet = mysqli_fetch_array($beer_qry))
{
$tmp = array(
'beerid' => $beer_fet['beerid'],
'productName' => $beer_fet['productName'],
'ibu' => $beer_fet['ibu'],
'abc' => $beer_fet['abv'],
'notes' => $beer_fet['notes'],
'style' => $beer_fet['style'],
'sizes' => array()
);
$beer_pk = $tmp['beerid'];
$size_qry = $func->getSizes($beer_pk);
while ($size_fet = mysqli_fetch_array($size_qry))
{
$tmp['sizes'][] = array(
'beerId' => $size_fet['beerId'],
'size' => $size_fet['size'],
);
}
$row_array['beers'][] => $tmp;
}
array_push($json_response, $row_array);
}
echo json_encode($json_response);