从 php json_encode() 调用 javascript 变量时出错

我在从 php 调用 javascript 变量时遇到问题json_encode()。在 javascript 中,我无法获得 array.length 因为有标签1:。我想要[res_tmp]数组获取像[sample]数组一样的格式(没有标签数字数组,例如:1:,2:)。感谢您的帮助。


回声(假):


res_tmp: {

0: null,

1: {

name: "AAA",

sort: 1

},

2: {

name: "DDD",

sort: 2

}, 

...


回声(我希望):


res_tmp: {

 null,

{

name: "AAA",

sort: 1

},

{

name: "DDD",

sort: 2

}, 

...

这是我的代码:


    $tmp = [


        [

         "name"  => "1.AAA",

         "sort"  => 1,

      ],[

         "name"  => "10.CCC",

         "sort"  => 10,

      ],[

         "name"  => "11.BBB",

         "sort"  => 11,

      ],[

         "name"  => "2.DDD",

         "sort"  => 2,

      ],[

         "name"  => "3.EEE",

         "sort"  => 3,

      ],

    ];



for ($i=0; $i < count($tmp); $i++) { 

    $res_tmp[ $tmp[$i]['sort'] ] = $tmp[$i];

}


$nul = [0,4,5,6,7,8,9,12];

for ($j=0; $j < count($nul); $j++) { 

  $res_tmp[ $nul[$j] ] = null;

}


$val = [

    "sample" => $tmp, 

    "res_tmp" => $res_tmp, 

];

echo json_encode($val);

// echo "<pre>",print_r($val),"</pre>";


MM们
浏览 102回答 1
1回答

largeQ

这是一个javascript方法。您在这里拥有的不是数组而是JSON 字典,它是一个对象。您可以使用 Object.keys 在 JavaScript 中获取它的长度:let keys = Object.keys(res_tmp);这将为您提供键数组。您可以迭代它并访问这些值。像这样:let res_tmp = {  0: null,  1: {    name: "AAA",    sort: 1  },  2: {    name: "DDD",    sort: 2  }}let keys = Object.keys(res_tmp);let arr = [];for (let j=0;j<keys.length;++j){  let item = res_tmp[keys[j]];  arr.push(item);}现在arr拥有你想要的回声。
打开App,查看更多内容
随时随地看视频慕课网APP