Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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
php json编码中的组合数组_Php_Json - Fatal编程技术网

php json编码中的组合数组

php json编码中的组合数组,php,json,Php,Json,我开发的php代码如下: while($row = mysql_fetch_array ($result)) { $catalogue = array( 'catalogue_id' => $row[0], 'catalogue_name' => $row[1], 'catalogue_cover' => $row[2], '

我开发的php代码如下:

while($row = mysql_fetch_array ($result))     
    {

        $catalogue = array(
            'catalogue_id' => $row[0],          
            'catalogue_name' => $row[1],
            'catalogue_cover' => $row[2],

            'category' =>  array(
                            'id' => $row[3],
                            'name' => $row[4],
                            'cover' => $row[5],
                            'item' => array (
                                'id' => $row[6],
                                'name' => $row[7],
                                'cover' => $row[8],
                                'description' => $row[9],
                                'price' =>$row[10]
                            )
            ),                  
        );
        array_push($json, $catalogue);              
    }   
    $jsonresult  =  array2json($json);
    echo $jsonresult;
[
    {
        "catalogue_id": "59",
        "catalogue_name": "IT Catalog",
        "catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg",
        "category": {
            "id": "60",
            "name": "Computer Accessory",
            "cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511b2e11e8b26.jpg",
            "item": {
                "id": "61",
                "name": "CD",
                "cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511b2e1da3063.jpg",
                "description": "",
                "price": "0.00"
            },
        "category-2": {
                "id": "61",
                "name": "IT Category",
                "cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511caf7329f63.jpeg",
                "item": {
                    "id": "63",
                    "name": "IT Item",
                    "cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511cafa17cce5.jpeg",
                    "description": "",
                    "price": "0.00"
                }
            }
        }
    }
]
结果是:

[
    {
        "catalogue_id": "59",
        "catalogue_name": "IT Catalog",
        "catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg",
        "category": {
            "id": "60",
            "name": "Computer Accessory",
            "cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511b2e11e8b26.jpg",
            "item": {
                "id": "61",
                "name": "CD",
                "cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511b2e1da3063.jpg",
                "description": "",
                "price": "0.00"
            }
        }
    },
    {
        "catalogue_id": "59",
        "catalogue_name": "IT Catalog",
        "catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg",
        "category": {
            "id": "61",
            "name": "IT Category",
            "cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511caf7329f63.jpeg",
            "item": {
                "id": "63",
                "name": "IT Item",
                "cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511cafa17cce5.jpeg",
                "description": "",
                "price": "0.00"
            }
        }
    }
]
但我想将相同的目录合并如下:

while($row = mysql_fetch_array ($result))     
    {

        $catalogue = array(
            'catalogue_id' => $row[0],          
            'catalogue_name' => $row[1],
            'catalogue_cover' => $row[2],

            'category' =>  array(
                            'id' => $row[3],
                            'name' => $row[4],
                            'cover' => $row[5],
                            'item' => array (
                                'id' => $row[6],
                                'name' => $row[7],
                                'cover' => $row[8],
                                'description' => $row[9],
                                'price' =>$row[10]
                            )
            ),                  
        );
        array_push($json, $catalogue);              
    }   
    $jsonresult  =  array2json($json);
    echo $jsonresult;
[
    {
        "catalogue_id": "59",
        "catalogue_name": "IT Catalog",
        "catalogue_cover": "http://192.168.0.22:90/Ecatalogue/catalogue/covers/511b21f398969.jpeg",
        "category": {
            "id": "60",
            "name": "Computer Accessory",
            "cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511b2e11e8b26.jpg",
            "item": {
                "id": "61",
                "name": "CD",
                "cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511b2e1da3063.jpg",
                "description": "",
                "price": "0.00"
            },
        "category-2": {
                "id": "61",
                "name": "IT Category",
                "cover": "http://192.168.0.22:90/Ecatalogue/category/covers/511caf7329f63.jpeg",
                "item": {
                    "id": "63",
                    "name": "IT Item",
                    "cover": "http://192.168.0.22:90/Ecatalogue/item/covers/511cafa17cce5.jpeg",
                    "description": "",
                    "price": "0.00"
                }
            }
        }
    }
]

我该怎么做?

您可以通过
catalog\u id
$catalog
编制索引,并随附
类别

while ($row = mysql_fetch_array($result)) {
    $catalogue_id = $row[0];
    if (!isset($json[$catalogue_id])) {
        $json[$catalogue_id] = array(
            'catalogue_id' => $catalogue_id,
            'catalogue_name' => $row[1],
            'catalogue_cover' => $row[2]
            'categories' => array();
            );
    }

    $json[$catalogue_id]['categories'][] = array(
        'id' => $row[3],
        'name' => $row[4],
        'cover' => $row[5],
        'item' => array (
            'id' => $row[6],
            'name' => $row[7],
            'cover' => $row[8],
            'description' => $row[9],
            'price' =>$row[10]
        );
}

$jsonresult = array2json(array_values($json));
echo $jsonresult;
除了
array2json
之外,您还可以使用
json\u encode

echo json_encode(array_values($json));

我不认为这是json的想法。。。您将拥有2倍的密钥类别或更高的多次,应该以您想要的方式违反规范您是说您只想覆盖
$json
数组的category元素吗?这是相当令人困惑的。我将我的问题分类编辑为一个分类,一个分类2。我可以创建它吗?你必须以这种格式创建数组。你自己做了什么来找到答案?社区希望帮助你,但我们不喜欢做你的家庭作业。谢谢你的帮助。目录是合并的,但类别是空数组。我知道了。我添加$json[$catalog\u id]=$catalog;数组推送后($catalog['categories',$categority);这个。@thinzar对不起,我错过了。我把代码简化了一点。请参阅更新的答案。