2016-05-26 16 views
2

phpで連想配列を生成し、配列にJS関数でアクセスします。 json_encode()を使用してPHP配列をJS配列に変換します。私はこのアプリケーションを実行するためにIE 8を使用します。いくつかのマシンではIE 8 for(;;)は動作しますが、他のマシンでは失敗します。いくつかのマシンではIE 8で(var in)は動作しますが、他のマシンでは失敗します。次のコードの違いは何ですか?これと同様にjavascriptのvsとvarの違い

for (var k = 0; k < ruleList.length; k++){ //do something } 

for (var x in ruleList){ //do something } 
+5

オブジェクトに対してはfor ... inを、配列にはforを使用します。 – Tushar

答えて

0

the MDN documentationで述べている:任意の順序で オブジェクトの列挙可能なプロパティを超える

...のための文で反復し、。異なるプロパティごとに、ステートメントを実行することができます 。

最初のステートメントは配列に使用され、2番目のステートメントはオブジェクトのすべてのキーを取得するために使用されます。

0

既にこの質問の議論と回答があります。

Questionを参照してください。

for ... in文は、オブジェクトの列挙可能なプロパティを任意の順序で反復処理します。異なるプロパティごとに、ステートメントを実行できます。

forステートメントは、括弧で囲みセミコロンで区切られた3つのオプション式で構成されたループを作成し、その後にループで実行されるステートメントまたは一連のステートメントが続きます。

+0

ありがとうございます。前にこれを見つけられませんでした。 –

0

JavaScriptには連想配列はありません(真剣に)。だから、例えば、あなたは完全に異なるタイプで終わるかもしれないあなたのPHPのデータに応じて:

<?php 
$consecutive_keys = array(
    0 => 'Zero', 
    1 => 'One', 
    2 => 'Two', 
); 
$sparse_keys = array(
    5 => 'Five', 
    10 => 'Then', 
); 
$dictionary = array(
    'Foo' => 'Bar', 
); 

echo json_encode($consecutive_keys) . PHP_EOL; 
echo json_encode($sparse_keys) . PHP_EOL; 
echo json_encode($dictionary) . PHP_EOL; 
["Zero","One","Two"]  <-- Array 
{"5":"Five","10":"Then"} <-- Object 
{"Foo":"Bar"}   <-- Object 

JavaScript配列には、JavaScriptのサブセットは、あなたがそれ(オブジェクトプロパティをループ)var x in ruleList種類のを見つけることができますオブジェクトであるため、どちらの場合でも動作しますが、配列を持っているときに期待することはできません。

+0

ありがとうございます。配列とオブジェクトの間の明確な説明。それはすべて私はPHPで配列を作成する方法によって異なります。 –

2

まあ、両方とfor(i in x)作品、配列、for(;;)が配列

var x = [1, 2, 3]; 
for(var i=0; i<x.length; i++) console.log(x[i]); 

var o = {1:1, 2:2, 3:3}; 
for(var i=0; i<o.length; i++) console.log(x[i]); // returns undefined because object o doesn't have property length 

でのみ動作します。しかし、あなたがオブジェクト

var o = {1:1, 2:2, 3:3}; 
var keys = Object.keys(o); 
for(var i=0; i<keys.length; i++) console.log(o[keys[i]]); 
のキーの配列を取得するために Object.keysを使用することができますが

var x = [1, 2, 3]; 
for(var i in x) console.log(x[i]); 

var o = {1:1, 2:2, 3:3}; 
for(var i in o) console.log(o[i]); 

オブジェクト

よくあることはオブジェクトの場合は、配列の場合はfor(;;)

+0

ありがとうございます。私はPHPとJSの初心者です –

関連する問題