2013-01-15 128 views
-2

我需要将此代码转换为PHP的帮助。将JavaScript代码转换为PHP

var formula = [10,6.7,3.4]; 
var user1 = [1,0,2,1,1,0,2,2,2,2]; 
var user2 = [2,1,2,0,1,2,2,2,0,0]; 
var result = 0; 
calculate(); 
function calculate(){ 
    for(var i=0; i<user1.length; i++){ 
     result +=formula[Math.abs(user1[i]-user2[i])] 
    } 
} 
alert(result); 

PHP代码:

<?php  
$formula = array(10,6.7,3.4); 
$user1 = array(1,0,2,1,1,0,2,2,2,2); 
$user2 = array(2,1,2,0,1,2,2,2,0,0); 
$result = 0; 
function calculate(){ 
    for($i=0, $size = count($user1); $i<$size; $i++){ 
     $result += $formula(abs($user1[$i]-$user2[$i])); 
    } 
} 
calculate(); 
echo $result; 
?> 

PHP代码不起作用。请帮帮我。

+1

是否有错误讯息? –

回答

6

$user1, $user2, $formula范围不变量 - 它们传递给函数:

function calculate($user1, $user2, $formula) { 
    $result = 0; 
    for($i = 0, $size = count($user1); $i<$size; $i++){ 
     $result += $formula[ abs($user1[$i]-$user2[$i]) ]; 
    } 
    return $result; 
} 
$result = calculate($user1, $user2, $formula); 
echo $result; 

此外,你错过了$formula阵列上的索引,我已经在上面添加它。

 $result += $formula[ abs($user1[$i]-$user2[$i]) ]; 

最后,我已将return $result;添加到返回计算值的函数中。

+1

另外,他在for循环中删除了公式查找。 –

+2

你也应该'返回$结果'。 –

+0

感谢评论家伙,我已经添加了你的两个建议,并将'$ result'初始化为'0'。 – nickb

1

您必须传递变量并返回结果。

$formula = array(10,6.7,3.4); 
$user1 = array(1,0,2,1,1,0,2,2,2,2); 
$user2 = array(2,1,2,0,1,2,2,2,0,0); 

function calculate($user1, $user2, $formula){ 
    for($i=0, $size = count($user1); $i<$size; $i++){ 
     $result += $formula[abs($user1[$i]-$user2[$i])]; 
    } 
    return $result; 
} 
$result = calculate($user1, $user2, $formula); 
echo $result; 
+0

你忘了'return',我把它添加到了ya :-P –

+1

哦......魔术! :D(谢谢;)) –

+0

非常感谢大家 – user1924058