【问题标题】:How to define nested array in javascript?如何在javascript中定义嵌套数组?
【发布时间】:2014-01-17 14:50:41
【问题描述】:

我正在开发的网页通过对 php 文件的 ajax 调用从数据库中检索(产品)信息。给定下面简化的php文件中的数组结构和相关的json编码的嵌套字符串,如何优雅的在javascript中定义对应的嵌套数组呢?

看了JS nested arrays中的例子,还是卡住了……

php代码:

$productinfo = array();
$productinfo['supplierA']['agreementX']['productY']['productpropertyZ'] = 'valueProductproperty';
echo json_encode($productinfo);

【问题讨论】:

  • 数组需要整数索引,不是吗?也许你想要一个对象?
  • 你的代码有什么问题?怎么了?
  • @scott:理想情况下,我想使用带有键的嵌套关联数组并使用 javascript 对象描述
  • 第一行末尾缺少;
  • @Pointy:我当前的代码使用一个(复杂的)二维数组,其中合并了提供的 php 代码中的键。然后才发现php允许2维以上的数组(是的,我的编码经验还是有限的),所以想改进一下代码...

标签: javascript php arrays multidimensional-array


【解决方案1】:

您正在尝试创建一个对象,而不是数组,数组是有序列表,对象是无序键/值对。

这样就可以了:

var obj = {"supplierA": {"agreementX": {"productY": {"productpropertyZ":"valueProductproperty"}}}};

具有多个值,这可能如下所示:

var obj = {
     "A": {
         "1": "asd",
         "2": {
             "I": "asdf",
             "II": "asdfg"
          }
      },
      "B": "asdfgh"
    }

欲了解更多信息,请前往http://json.org/

【讨论】:

  • 你的第一个例子实际上会抛出TypeError: Cannot read property 'agreementX' of undefined
  • OP 注意:JavaScript 对象基于与 PHP 关联数组(字符串键到值的映射)相同的思想,而 JavaScript 数组更类似于 Java 或 C 数组(这是整数索引到值的严格映射)。将具有相同术语的语言混合用于略有不同的事物时,术语可能会令人困惑。
  • 谢谢!但是如果嵌套的 $productinfo 数组包含更多值,如何定义 javascript 结构? (我打算问)
  • @bbuecherl:感谢添加的示例(!)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 2021-11-08
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多