2

現在のページに固有の新しいタイプの配列を作成するためにループスルーしようとしている配列があります。

私の配列は次のようになります。

 //$_SESSION['data'] =
 Array ( 
        [0] => 1 
        [1] => 0 
        [2] => Tom 
        [8] => 1 
        [4] => 1 
        [5] => Array ( 
                        [7] => Array ( 
                                    [0] => Andrew 
                                    [1] => 1 
                                    [2] => 1 
                                    [4] => 0 
                                    [5] => avatar.jpg 
                                    [6] => 1 
                                    ) 
                    ) 
        [6] => Array ( [0] => 1 
                       [1] => 2 
                     ) 
 )

だから私のJSファイルにはこれがあります:

var stats = <? echo json_encode($_SESSION['data'][5]); ?> ; //this is the array 

my_data = new Array();
for(var key in stats){

    if(key in my_data){} else { //prevent double entry

    my_data[key] = new Array();
    my_data[key][0] = stats[key][6]; 
    my_data[key][1] = stats[key][5];
    my_data[key][2] = stats[key][2]; 
    my_data[key][3] = stats[key][0];
    }
}

console.log(my_data);

今console.logで私はこれを手に入れます:

[undefined × 7, Array[4]
 0: "1"
 1: "avatar.jpg"
 2: "1"
 3: "Andrew"
 length: 4
 __proto__: Array[0]
 ]

なぜ未定義のx7と言っているのだろうか?

4

2 に答える 2

1

JSONを使ってみませんか??

var stats = <? echo json_encode($_SESSION['data'][5]); ?> ;

これで、通常どおりに反復できます。

for (x in stats){
     console.log(stats[x]);
}

アップデート

はい、「x7undefined」が表示されます。これは、js配列の8番目のエントリを直接設定しているためです。(forループの反復ではkey == 7)最初の7つのエントリは基本的に未定義です。

最初のいくつかのインデックスを使用する場合は、を使用するarray.push(..)か、を使用して最後のインデックスを手動で設定します。array[array.length] = new_object;

于 2012-06-03T04:57:08.600 に答える
0

まず、オブジェクトをJSONにシリアル化してみてください。

var stats = <? echo json_encode($_SESSION['data'][5]); ?> ;

その後...

7つのキーで配列を作成したいので問題。例えば:

var boo = [];
boo[7] = new Array();

したがって、JavaScriptは7つのセクションを持つ配列を作成し、7つのundefined値を持つ配列が作成されます。

object実際には、ではなく必要ですarray

このコードを試してください:

my_data = {};
for(var key in stats){

   if(!my_data[key]) { //prevent double entry
        my_data[key] = [];
        my_data[key][0] = stats[key][6]; 
        my_data[key][1] = stats[key][5];
        my_data[key][2] = stats[key][2]; 
        my_data[key][3] = stats[key][0];
   } 
}

console.log(my_data);

my_dataをからに変更しましarrayobject

于 2012-06-03T05:15:55.060 に答える