的new Array(count)
創建了length
設置爲count
,但沒有指標設置新Array
對象。當您打印陣列時,您會得到array.length
次undefined
。現在,
array.push(value);
相同
array[array.length] = value;
array.length ++;
哪new Array(3)
之後將設置元件編號3(第四元件);
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代碼有一個嚴重的缺陷,可以破壞你的網站,並使用它的用戶兩者的安全性。如果$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,因爲這些都是proper JSON but not proper JavaScript。 json_encode
似乎確實將它們編碼爲\u2028
和\u2029
,這是安全的。
你知道PHP在哪裏運行,以及Javascript在哪裏運行?請解釋您的「javascript代碼」的傳遞方式,而不僅僅是它包含的內容。 – mario
另外,請定義「不起作用」。這兩者都應該有效,但結果卻截然不同。 'pl.push(10)'產生'[undefined,undefined,undefined,10]';而'pl [0] = 10'導致'[10,undefined,undefined]'。 – Amadan