2016-09-26 111 views
1

从选择值不为null的列开始。 请注意,该值是浮动的。在php中使用数组进行数学运算

$sql = "SELECT cf_user, cf_pakar FROM chevy.gejala1 WHERE cf_user != 'null' and cf_pakar != 'null'"; 
$result = $conn->query($sql); 

之后,我把它放在数组变量中,然后用它做数学运算。

if ($result->num_rows > 0) { 
    // output data from each row 
    while($row = $result->fetch_assoc()) { 
     $cf_user =$row["cf_user"] ; 
     $cf_pakar = $row["cf_pakar"]; 
     $gejala = array ($cf_pakar*$cf_user); 
    } 
} else { 
    echo "0 results"; 
} 

样品:

我已经从$cf_user(0.2,0.4和0.6)和$cf_pakar 3值(1,1和1),然后 ,$gejala将显示3分的结果。

$cf_user*$cf_pakar = 0.2,0.4和0.6当我回声使用foreach

的问题是:

我有$gejala是:(0.20.40.6)的结果数组。 计数为$gejala为1且值为浮点数。

如何区分结果?因为我对每个结果字母都有另一个数学运算。

回答

1

随着行:$gejala = array($cf_pakar * $cf_user);你只是创建一个新的阵列,从而压倒一切的$gejala在每次迭代到您的循环。这可能无法提供预期的效果。考虑这个选项,而不是:

<?php 

    // CREATE AND INITIALIZE A NEW ARRAY TO AN EMPTY VALUE. 
    $gejala  = array(); 

    if ($result->num_rows > 0) {   
     while($row = $result->fetch_assoc()) { 
      $cf_user = $row["cf_user"] ; 
      $cf_pakar = $row["cf_pakar"]; 
      // NOW PUSH THE RESULT OF YOUR MATH OPERATION, 
      // TO THE ARRAY WITH EACH ITERATION: 
      $gejala[] = round((cf_pakar*$cf_user), 1); 
     } 
    } else { 
     echo "0 results"; 
    } 
    var_dump($gejala); 

或者干脆:

<?php 

    // CREATE AND INITIALIZE A NEW ARRAY TO AN EMPTY VALUE. 
    $gejala  = array(); 

    if ($result->num_rows > 0) {   
     while($row = $result->fetch_assoc()) { 
      // NOW PUSH THE RESULT OF YOUR MATH OPERATION, 
      // TO THE ARRAY WITH EACH ITERATION: 
      $gejala[] = round(($row["cf_user"]*$row["cf_pakar"]), 1); 
     } 
    } else { 
     echo "0 results"; 
    } 
    var_dump($gejala); 
+0

不工作,结果还是一样'$ gejala [0]'结果0.20.40.6数仍为1和'$ gejala [1]'是错误的,我需要3个结果才能做另一个操作。你说什么? –

+0

@RyanRizqi令人怀疑.... – Poiz

+0

我想使用内爆和爆炸,但它没有分开数组中的结果。计数仍然是1 –

0

你每次迭代都会覆盖$gejala。使用[]运算符将乘法结果追加到数组中。

while($row = $result->fetch_assoc()) { 
    $cf_user =$row["cf_user"] ; 
    $cf_pakar = $row["cf_pakar"]; 
    $gejala[] = $cf_pakar * $cf_user; 
}