繁体   English   中英

使用PHP在JSON数组中创建数组

[英]Creating an array inside of an array for json using PHP

我正在尝试使用PHP复制此json文件,但似乎无法在另一个名为“级别”的数组中获取对象“位置”的数组

"levels": [
    {
        "id": "lower",
        "title": "Floor 26",
        "map": "images/apartment/upper.jpg",
        "minimap": "images/apartment/upper-small.png",
        "locations": [

            {
                "id": "1",
                "title": "Kitchen",
                "about": "",
                "description": "<img src=\"images/logo.png\" 
                 alt=\"sdfsfs\"><p>aaaaaaaaaaaaaa<p>",
                "category": "furniture",
                "x": "0.4746",
                "y": "0.2883",
                "zoom": "1"
            },

到目前为止,这就是我所拥有的。

$connect1 = new mysqli("localhost", "root", "root", "location");
$result1 = mysqli_query($connect1, "SELECT * FROM locations");

$connect2 = new mysqli("localhost", "root", "root", "Floors");
$result2 = mysqli_query($connect2, "SELECT * FROM levels");


$data = array(); 
$levels = array();

while($row = mysqli_fetch_array($result2, MYSQLI_ASSOC)){
    $levels[] = $row;
}

  $data["levels"] = $levels;   

  $locations = array();


    while($row = mysqli_fetch_array($result1, MYSQLI_ASSOC)){
    $locations[] = $row;
    }

    $data["locations"] = $locations;

这是输出

"levels": [
    {
        "id":"1",
        "title":"Floor26",
        "map":"images\/apartment\/upper.jpg",
        "minimap":"images\/apartment\/upper-small.png"
    }
],
"locations": [
    {

问题是我希望locations是json文件中所示的级别类别中的数组,而不是在插入数据后关闭的levels数组。 请帮忙。 我是一个完整的初学者,因此任何建议将不胜感激。

首先,使用更具描述性的变量名称。 它们更易于阅读和理解。

其次,将位置添加到嵌套循环的levels数组中:


编辑:实际上,您不需要嵌套循环,因为每个级别的位置都相同。 如果您每次都在查询不同的位置,或者根据级别更改导入的位置,则嵌套是有意义的。

$locationConnect = new mysqli("localhost", "root", "root", "location");
$locationsResult = mysqli_query($locationConnect, "SELECT * FROM locations");

$levelsConnect = new mysqli("localhost", "root", "root", "Floors");
$levelsResult = mysqli_query($levelsConnect, "SELECT * FROM levels");

$data = array(); 
$levels = array(); 
$locationsArray = array();

//actually since locations appear to be the same for all results, you don't need to nest the loops, this is more efficient:
//loop location results and build locations array:
while($locationRow = mysqli_fetch_array($locationResult, MYSQLI_ASSOC)){
    $locationsArray[] = $locationRow;
}

while($levelRow = mysqli_fetch_array($levelsResult, MYSQLI_ASSOC)){        
    //add locations array to your level row:
    $levelRow["locations"] = $locationsArray;
    //add level row to your levels array
    $levels[] = $levelRow;
}

$data["levels"] = $levels;  

//are you using this for something else? $employee_data seems to be a new array
$employee_data["locations"] = $locationsArray;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM