Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于json输出的php嵌套数组_Php_Arrays_Json - Fatal编程技术网

用于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'

我在3个表上运行查询,并尝试将结果格式化为嵌套数组。是内部阵列让我难堪。sizes数组应在beer数组对象中,但在其外部。谢谢你的帮助

JSON

PHP


你似乎在某个时候误入歧途,从那一刻起就错了

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