はに設定されnew Array(count)
た新しいArray
オブジェクトを作成しますが、インデックスは設定されていません。配列を出力すると、時間が得られます。今、length
count
array.length
undefined
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.length
3になります。
ただし、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