はに設定されnew Array(count)た新しいArrayオブジェクトを作成しますが、インデックスは設定されていません。配列を出力すると、時間が得られます。今、lengthcountarray.lengthundefined
array.push(value);
と同じです
array[array.length] = value;
array.length ++;
その後new Array(3)、要素番号3(4番目の要素)を設定します。
pl[0] = '<?php echo $var1; ?>';
pl[1] = '<?php echo $var2; ?>';
pl[2] = '<?php echo $var3; ?>';
「正しく」機能します。それは期待通りです。ただし、配列の長さを初期化する必要はありません。やってさえ
var pl = [];
pl[0] = 1;
pl[1] = 2;
pl[2] = 3;
それでも、はpl.length3になります。
ただし、PHPコードには重大な欠陥があり、Webサイトとそれを使用するユーザーの両方のセキュリティを損なう可能性があります。$var1キャラクターが含まれている場合'(ユーザーからのものであるか、誤って挿入したため)、足を撃ちます-次のよう$var1に設定されている場合は次のようになります。
$var1 = "'; $.ajax('/user/delete', { method: 'post' }); '"
どうぞよろしくお願いします。json_encode代わりに関数を使用して、値を適切に引用してください。
var pl = [],
il = [];
pl.push(<?php echo json_encode($var1); ?>);
il.push(<?php echo json_encode($var2); ?>);
json_encodeまたは、を使用して配列を簡単に作成できることに注意してください。
var pl = <?php echo json_encode(array(1, 'a', 'b', 5.7)) ?>;
これにより、JavaScriptコードが生成されます。
var pl = [1,"a","b",5.7];
Unicode文字U+2028およびU+2029は適切なJSONですが、適切なJavaScriptではないため、注意する必要があります。それらを安全json_encodeにエンコードしているようです。\u2028\u2029