2010-09-01 3 views
2

im not sure, если это вопрос в php или mysql maths.PHP-математика по SQL-данным

У меня есть таблица с данными, и хотя я могу эхо отдельных данных на экран или эхо и отдельные части данных, используя php. Я не знаю, как выполнять математику по самим данным.

Для простоты, скажем, моя таблица имеет 4 колонки, колонки ID и три с моих данных я хочу размножаться в них, data1, data2 и данные 3,

и изложил что-то вроде этого

id data1 data2 data3 
1 2.5  2.6  2.7 
2 2.6  7.0  8.2 
3 3.0  1.8  6.0 

, что я хочу, чтобы иметь возможность выполнять математику, такую ​​как: data1 (row1) x data (row2) x data3 (row) или data1 (column2) x data (столбец 3) x data3 (column3) ,

Я могу использовать цикл while для обработки данных, но я могу только эхо каждой строки с различными именами полей и его значениями на экране. Я не знаю, как умножать поля в разных строках вместе. На самом деле, мне также хотелось бы иметь возможность только несколько рядов вместе, но также добавлять их, делить их и т. Д.

Конечная таблица данных, вероятно, потребуется сделать это, вероятно, будет включать в себя множество столбцов и несколько строк. Тем не менее, я в основном зациклился на том, как получить все данные, по одному от каждого столбца и заставить его делать математику по нему по одному, ставя его в цикл? любые идеи

веселит

+0

Где вы хотите сохранить/отобразить результаты? В PHP или в базе данных? –

+1

Пример ожидаемого результата будет приятным. –

ответ

3

Так вы говорите, у вас есть

id data1 data2 data3 
1 2.5 2.6 2.7 
2 2.6 7.0 8.2 
3 3.0 1.8 6.0 

и вы хотите, чтобы вычислить произведение главных диагональных записей (без учета id столбца)?

С вашего вопроса неясно, действительно ли это то, что вы хотите сделать, или просто хотите вычислить data1 * data2 * data3 для каждой строки.

Если это последнее: вы должны сделать это в MySQL. Добавить дополнительный столбец в списке столбцов в вашем заявлении выберите:

SELECT 
    id, 
    ..., 
    data1 * data2 * data3 AS product 
FROM 
    ... 

Если это первое: Вы должны сделать это в PHP, а не MySQL. Вы можете сделать это, установив многомерный массив.

Вы, наверное, есть код, который выглядит примерно так:

while ($row = mysqli_fetch_assoc($query_result)) { 
    echo $row['id'].' '.$row['data1'].' '.$row['data2'].' '.$row['data3']; 
} 

мы изменим его к следующему:

$myarray = array(); 
while ($row = mysqli_fetch_assoc($query_result)) { 
    $myarray[] = array($row['data1'], $row['data2'], ['data3']); 
} 

Теперь, если вы добавите следующее:

echo '<pre>'; 
var_dump($myarray); 
echo '</pre>'; 

вы увидите, что у нас есть двумерный массив.

Теперь, если мы хотим, чтобы найти произведение диагональных элементов в этом массиве мы можем использовать это:

$product = $myarray[0][0] * $myarray[1][1] * $myarray[2][2]; 
Смежные вопросы