PHP математика на данных SQL - PullRequest
2 голосов
/ 02 сентября 2010

Я не уверен, что это вопрос по php или mysql.

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

Для простоты, скажем, в моей таблице 4 столбца, столбец идентификатора и три с моими данными, которые я хочу умножить в них, data1, data2 и data 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 для зацикливания данных, но я могу отображать на экране только каждую строку с различными именами полей и их значениями. Я не знаю, как умножить поля в разных строках вместе. На самом деле я также хотел бы иметь возможность теперь только умножать строки вместе, а также добавлять их, делить их и т. Д.

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

ура

1 Ответ

3 голосов
/ 02 сентября 2010

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

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']);
}

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

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

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

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

$product = $myarray[0][0] * $myarray[1][1] * $myarray[2][2];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...