2013-01-15 162 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