2010-07-03 122 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