将2D数组从PHP转换为JS

时间:2018-08-29 14:18:08

标签: javascript php arrays initialization

想象一下,我在PHP中具有2D数组,如下所示:

<?php
$db = array(
    "1" => array(
         "1" => "aaa",
         "2" => "bbb",
         "3" => "ccc"
    ),
    "2" => array(
         "1" => "ddd",
         "2" => "eee"
    ),
    "3" => array(
         "1" => "fff",
         "2" => "ggg",
         "3" => "hhh"
    )
);
?>

我想将其转换为JS,是的,我可以做类似的事情:

var db = new Array(3);
db[1][1] = "aaa";
db[1][2] = "bbb";
db[1][3] = "ccc";
db[2][1] = "ddd";
db[2][2] = "eee";
db[3][1] = "fff";
db[3][2] = "ggg";
db[3][3] = "hhh";

在JS中初始化数组很丑陋,有没有像在PHP中那样更好的初始化方法?

4 个答案:

答案 0 :(得分:1)

js还可以在一行中初始化数组:

var db = [["aaa", "bbb", "ccc"], ["ddd", "eee", "fff"], ["ggg", "hhh", "iii"]]

实际上很少见到new Array()符号(我在读到您的问题之前就已经忘记了它)

奖金:这种在php中声明数组的方法也是正确的

$db = [["aaa", "bbb", "ccc"], ["ddd", "eee", "fff"], ["ggg", "hhh", "iii"]];

答案 1 :(得分:0)

您可以json_encode数组

php

$db = array(
"1" => array(
     "1" => "aaa",
     "2" => "bbb",
     "3" => "ccc"
),
"2" => array(
     "1" => "ddd",
     "2" => "eee"
),
"3" => array(
     "1" => "fff",
     "2" => "ggg",
     "3" => "hhh"
)
);
echo json_encode($db);

输出

 {"1":{"1":"aaa","2":"bbb","3":"ccc"},"2":{"1":"ddd","2":"eee"},
 "3": {"1":"fff","2":"ggg","3":"hhh"}}

JavaScript

 var arr = {"1":{"1":"aaa","2":"bbb","3":"ccc"},"2":{"1":"ddd","2":"eee"},
 "3": {"1":"fff","2":"ggg","3":"hhh"}};

输出访问某些索引

 arr[1][1] = aaa
 arr[1][3] = ccc
 arr[2][2] = eee

答案 2 :(得分:0)

您的PHP数组看起来像是一个关联数组的关联数组:拥有指向您的值的命名键的好方法。

在JS中,数组从零开始以数字索引,用于命名关联键=>值对的数据类型是JS对象。

这是两种方法。如果不需要显式命名索引值,则示例1使用数组语法。 Example#2演示了如何使用JS对象,以防您需要使用字符串来命名密钥。

var example1 = [
    ['aaa', 'bbb', 'ccc'],
    ['ddd', 'eee'],
    ['fff', 'ggg', 'hhh']
];


var example2 = {
    "1": {
        "1": "aaa",
        "2": "bbb",
        "3": "ccc"
    },            
    "2": {
        "1": "ddd",
        "2": "eee"
    },
    "3": {
        "1": "fff",
        "2": "ggg",
        "3": "hhh"
    }
};

答案 3 :(得分:0)

如果要在JS脚本上使用PHP数组,则可以在PHP上声明

<?php 
  $db = array(
  "1" => array(
      "1" => "aaa",
      "2" => "bbb",
      "3" => "ccc"
  ),
  "2" => array(
      "1" => "ddd",
      "2" => "eee"
  ),
  "3" => array(
      "1" => "fff",
      "2" => "ggg",
      "3" => "hhh"
  )
); 
?>

然后在JS数组声明中“回显”它。

<script>
    var myJsObject = <?= json_encode($db) ?>; 
</script>

否则,如果您的问题是关于编码符号

<script> 
 var myJsObject = { 
              "1" : { 
                  "1" : "aaa", 
                  "2": "bbb", 
                  "3" : "ccc"
              }, 
              "2" : { 
                  "1" : "dd", 
                  "2": "ee"
               }
             }; 
</script>

请注意,如果用JS而不是数组表示,则PHP关联数组是对象。您也可以将它们作为数组访问。