2016-09-26 2 views
1

Начните с выбора значения из столбца, где значение не равно null. Обратите внимание, что значение равно float.Математическая операция с массивом в 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"; 
} 

образца:

У меня 3 значение от $cf_user (0,2, 0,4 и 0,6) и $cf_pakar (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 Doubtful .... – Poiz

+0

Я пытаюсь использовать implode и взрываться, но он не разделяет результат в массиве. count still 1 –

0

Способ, которым у вас в настоящее время есть перезапись $gejala с каждой итерацией. Используйте оператор [], чтобы вместо этого добавить результат умножения на массив.

while($row = $result->fetch_assoc()) { 
    $cf_user =$row["cf_user"] ; 
    $cf_pakar = $row["cf_pakar"]; 
    $gejala[] = $cf_pakar * $cf_user; 
} 
Смежные вопросы