2015-05-10 3 views
0

У меня проблемы с математическими операциями между двумя или более массивами. Я хранение значений в базе данных MySQL, из которого я создаю массивы таким образом:Расчет между двумя или более массивами

$ni = "SELECT * FROM $table_is_y WHERE id = 'N1'"; 
$ta = "SELECT * FROM $table_bs_y WHERE id = 'T1'"; 

$net_1 = $mysqli->query($ni); 
$tot_1 = $mysqli->query($ta); 

$arr_ni = mysqli_fetch_array($net_1); 
$arr_ta = mysqli_fetch_array($tot_1); 

Таким образом, я должен был создать два массива, называемых $ arr_ni и $ arr_ta. Рассматривая такие массивы таким образом:

$ arr_ni = (ni1, ni2, ni3); $ arr_ta = (ta1, ta2, ta3);

мне нужно, например, чтобы вычислить новый массив со значениями:

$ arr_final = (ni1 * ТА1, ni2 * ta2, Ni 3 * ta3);

Можете ли вы помочь мне понять, как я могу это сделать? Спасибо за вашу поддержку.

+0

ли оба массива всегда имеют одинаковое количество элементов? – TheSk8rJesus

+0

Да, они делают. Массивы имеют одинаковые размеры, и конечный результат всегда будет иметь одинаковую размерность первых двух. – mauro269

+0

У вас нет предложения ORDER BY, так что, по-видимому, вам не все равно, какое значение ni имеет значение ta. Также ваши переменные меняют имя на полпути. Наверное, это опечатка? – Strawberry

ответ

1

Я понятия не имею, в PHP, но я должен знать о том, как рассчитать так, пожалуйста, игнорировать мою глупую ошибку переменной

Это два массива ($ arr_ni, $ arr_ta) будет содержать 3 значения.

так что вы можете попробовать, как этот

вы можете создать $ arr_final переменной

for($i = 0; $i < $arr_ni.length; $i++) { 
    $arr_final[$i] = $arr_ni[$i] * $arr_ta[$i]; 
} 

так окончательным получите ответ в $ arr_final. Я не уверен, но я думаю, что это полезно для вас.

+0

Спасибо, я реализовал это решение, даже если оно кажется немного медленным. У вас есть трюк, чтобы улучшить скорость? Спасибо – mauro269

0

я думаю, что этот вид расчета лучше сделать в самом запросе, например:

SELECT 
    table_is_y.net_income*table_bs_y.total_assets AS final_sum 
FROM 
    net_income 
LEFT JOIN 
    table_bs_y on table_is_y.id=table_bs_y.id; 

, если вам нужна помощь по присоединению/суммированием таблиц перед присоединиться, пожалуйста, обращайтесь ...

+0

Это кажется намного более полезной для базы данных, поэтому веб-сайт, возможно, будет более медленным, делая вычисления таким образом. Вы согласны? – mauro269

+0

обычно, запросы БД оптимизированы для этих видов объединений и т. Д. на мой взгляд, вы не должны использовать функции массива php для объединения массивов вместе, потому что: вы можете делать ошибки и тратить много времени на оптимизации, вместо того чтобы позволить умным людям (SQL) выполнять эту работу за вас. во-вторых, sql-запросы легче проверить на наличие ошибок и отладки (легко запускать sql в командной строке или на рабочем столе и проверять). –

0

Вы можете использовать array_map

<?php 
function timesValues($x, $y) 
{ 
    return $x * $y; 
} 

$a = array(1, 2, 3, 4, 5); 
$b = array(6, 7, 8, 9, 10); 

$c = array_map("timesValues", $a, $b); 
print_r($c); 
+0

Я должен делать различные вычисления, а не просто умножать. Например, нужно сделать какое-то исчисление: $ x [$ i] * $ y [$ i] * 2/($ x [$ i] + $ x [$ i-1]). Возможно, это не лучшее решение в этом случае. Спасибо за поддержку. – mauro269

Смежные вопросы