三维数组解决方案javascript

三维数组解决方案javascript,javascript,Javascript,我正在从数据库中读取信息,我想要以下结构:大陆->国家->城市。我通过PHP获取数据。我想将这些数据存储在一个三维javascript数组中(或者至少从昨天起我就一直在尝试这样做) 我不知道是否可能发生以下情况: var triArray[0] = ["Africa"]; var triArray[0][0] = ["Niger"]; var triArray[0][0][0] = ["Abuya"]; 其想法是通过PHP生成这些数组,并使用数据填充它们 我“需要”(我想,我不是专家)一个三维

我正在从数据库中读取信息,我想要以下结构:大陆->国家->城市。我通过PHP获取数据。我想将这些数据存储在一个三维javascript数组中(或者至少从昨天起我就一直在尝试这样做)

我不知道是否可能发生以下情况:

var triArray[0] = ["Africa"];
var triArray[0][0] = ["Niger"];
var triArray[0][0][0] = ["Abuya"];
其想法是通过PHP生成这些数组,并使用数据填充它们

我“需要”(我想,我不是专家)一个三维空间,然后使用for循环来查看哪个城市属于哪个国家,那个国家位于哪里

<ul
   <li>Africa
       <ul>
          <li>Niger
              <ul>
                  <li>Abuya</li>
              </ul>
          <li>
       </ul>
   </li>
</ul>

考虑一种更面向对象的方法-这应该很容易,因为大陆/国家/城市都很重要

function Continent(name) {
    this.name = name;
    this.countries = [];
}
Continent.prototype.addCountry = function(country) {
    if( !(country instanceof Country)) throw new Error("Not a country");
    this.countries.push(country);
    // may want to add logic for duplicate checking
}
您可以以类似的方式建立
职能国家
职能城市

现在已经完成了,并且您已经构建了您的结构,您可以输出它了。可能是这样的:

Continent.prototype.toString = function() {
    var list = "<li>" + this.name,
        l = this.countries.length, i;
    if( l > 0) {
        list += "<ul>";
        for( i=0; i<l; i++) {
            list += this.countries[i]; // toString implicitly called
        }
        list += "</ul>";
    }
    list += "</li>";
    return list;
}

考虑一种更面向对象的方法——这应该很容易,因为大陆/国家/城市都很重要

function Continent(name) {
    this.name = name;
    this.countries = [];
}
Continent.prototype.addCountry = function(country) {
    if( !(country instanceof Country)) throw new Error("Not a country");
    this.countries.push(country);
    // may want to add logic for duplicate checking
}
您可以以类似的方式建立
职能国家
职能城市

现在已经完成了,并且您已经构建了您的结构,您可以输出它了。可能是这样的:

Continent.prototype.toString = function() {
    var list = "<li>" + this.name,
        l = this.countries.length, i;
    if( l > 0) {
        list += "<ul>";
        for( i=0; i<l; i++) {
            list += this.countries[i]; // toString implicitly called
        }
        list += "</ul>";
    }
    list += "</li>";
    return list;
}

这是不可能的,如果
triArray[0]
是字符串,则它不能是字符串数组

你应该选择这样的结构:

{
     continents : [

         {
             name:"Africa",
             countries : [
                 {
                     name : "Niger",
                     cities : [
                         "Abuya" , "", ...
                     ]
                 },
                 ...
             ]
         },
         ...
     ]
 }
var continents = data["continents"];

for (var i =0,len = continents.length; i<len;i++){
    var continentData = continents[i];

    var continentName = continentData["name"];

    var listCountries = continentData["countries"];
    for (var y =0,leny = listCountries.length; y<leny;y++){
        var countryData = listCountries[y];

        var countryName = countryData["name"];

        // List of cities
        var cities = countryData["cities"];

    }

}
您可以这样访问它:

{
     continents : [

         {
             name:"Africa",
             countries : [
                 {
                     name : "Niger",
                     cities : [
                         "Abuya" , "", ...
                     ]
                 },
                 ...
             ]
         },
         ...
     ]
 }
var continents = data["continents"];

for (var i =0,len = continents.length; i<len;i++){
    var continentData = continents[i];

    var continentName = continentData["name"];

    var listCountries = continentData["countries"];
    for (var y =0,leny = listCountries.length; y<leny;y++){
        var countryData = listCountries[y];

        var countryName = countryData["name"];

        // List of cities
        var cities = countryData["cities"];

    }

}

这是不可能的,如果
triArray[0]
是字符串,则它不能是字符串数组

你应该选择这样的结构:

{
     continents : [

         {
             name:"Africa",
             countries : [
                 {
                     name : "Niger",
                     cities : [
                         "Abuya" , "", ...
                     ]
                 },
                 ...
             ]
         },
         ...
     ]
 }
var continents = data["continents"];

for (var i =0,len = continents.length; i<len;i++){
    var continentData = continents[i];

    var continentName = continentData["name"];

    var listCountries = continentData["countries"];
    for (var y =0,leny = listCountries.length; y<leny;y++){
        var countryData = listCountries[y];

        var countryName = countryData["name"];

        // List of cities
        var cities = countryData["cities"];

    }

}
您可以这样访问它:

{
     continents : [

         {
             name:"Africa",
             countries : [
                 {
                     name : "Niger",
                     cities : [
                         "Abuya" , "", ...
                     ]
                 },
                 ...
             ]
         },
         ...
     ]
 }
var continents = data["continents"];

for (var i =0,len = continents.length; i<len;i++){
    var continentData = continents[i];

    var continentName = continentData["name"];

    var listCountries = continentData["countries"];
    for (var y =0,leny = listCountries.length; y<leny;y++){
        var countryData = listCountries[y];

        var countryName = countryData["name"];

        // List of cities
        var cities = countryData["cities"];

    }

}

您是在问如何在PHP中创建三维数组,还是只是在JavaScript中循环?或者两者都有?您好,我想要的是如何构建包含上述信息的三维数组。或者用二维数组解决我的问题。在我看来,对象比数组更有意义……你是在问如何在PHP中创建三维数组,还是在JavaScript中循环?或者两者都有?您好,我想要的是如何构建包含上述信息的三维数组。或者用二维数组解决我的问题。在我看来,一个对象比数组更有意义……回答得很好,除了我可能会将
toString
重命名为
toHtml
之外。回答得很好,除了我可能会将
toString
重命名为
toHtml