2010-07-03 119 views
0

我有這樣的PHP代碼 -轉換PHP代碼爲JS

<?php 
for($i=1; $i<=1000; $i++) { 
    $array=array(); 
    $array[$i]=54*$i; 

    $arr=array($array[$i].","); 

    foreach ($arr as $value) { 
    echo $value; 
    } 
} 
?> 

我嘗試:

var i; 
for(i=1;i<=1000;i++) { 
    var array = new Array(); 
    array[i] = 54*i; 
    var arr = new Array(); 
    arr.push(array[i]+","); 
} 
alert(arr) 

但它不工作。 錯誤在哪裏?

+1

什麼是「不起作用」是什麼意思?你得到了什麼輸出?你期望輸出什麼? – 2010-07-03 19:42:48

+0

當你在'for'循環之外進行數組輸出時(就像你在JavaScript例子中做的那樣),你將只會得到最後一個數組,因爲每次迭代都會重新啓動它。 – Gumbo 2010-07-03 19:43:22

+0

不要以爲php會做你想做的事,它所做的只是echo($ i * 54)。',';每一次,但由於某種原因,以一種非常複雜的方式 – nathan 2010-07-03 19:50:47

回答

1

野生刺..因爲PHP代碼,雖然它可能會產生預期的輸出,實際上是'錯誤'(錯誤的基礎上,你可能會希望該陣列所有這些值,它不會)

所以這裏的PHP(固定) 。

<?php 
$a = array(); 
$stringVersion = ''; 
for($i=1; $i<=1000; $i++) { 
    $a[$i] = 54*$i; 
    $stringVersion .= $a[$i] . ','; 
} 
echo $stringVersion; 

這裏是一個JS替代品

var a = []; 
var stringVersion = ''; 
for(var i=1;i<=1000; i++) { 
    a[i] = 54*i; 
    stringVersion += a[i] + ','; 
} 
alert(stringVersion); 
+0

我寧願在迭代之後使用'stringVersion = implode(',',$ a);''。 – 2010-07-03 20:15:11

+0

同樣重新崩潰,我有這樣的,但JS版本看起來不同,然後不匹配,所以對齊他們:) – nathan 2010-07-04 11:01:09

0

事情是這樣的:

var array = new Array(1000); 
for(var i=1;i<=1000;i++) { 
    array[i] = 54*i; 
} 
alert(array[1000]) ; 

短短數 「指針」(雙關語是無意的);

  1. 你肯定不希望所有1000個呼叫回顯到消息框 - 我只顯示上次(1000 * 54)到用戶 - 點擊確定1000倍...
  2. 你不推任何東西到像PHP代碼的數組。在這種情況下,我將arraylength「定義」爲1000,但是創建一個沒有長度的數組確實有效。只需「添加」與arrayName [indexToBeCreated]等瞧。
  3. 循環變量不需要循環之前進行定義,只是定義他們內循環(對於(VAR我布拉布拉...

希望它可以幫助

+0

哦,警報是檢查是否所有工作正常。 – lam3r4370 2010-07-03 19:51:43