@arturka_v_10

Как сделать сложение массива?

Есть таблица БД
DlPuLAaWmLs.jpg

Есть такой код
$sql=$mysqli->query("SELECT * FROM rich_ninja WHERE nick = '".$usdat['nick']."' AND ninja_type='n1'");
$rows1=$sql->num_rows;
while($nj1=$sql->fetch_array()){
	echo "$nj1[price] - $nj1[percent] - $nj1[sbor]<br>";
}


Отображает он следующее
rXKmN6mU0TY.jpg

Мне нужно как-то заставить однотипные (где ninja_type = n1) каждую строку привести к функции
# SumCalc   сумма
function SumCalc($procent, $price, $sbor){
if($sbor > 0){
if($price > 0 AND $procent > 0){
$sbor = ($sbor < time()) ? (time() - $sbor) : 0;
$per_sec = $procent / 86400; # юникод суток 24*60*60
return (($per_sec * $price) * $sbor);
}else return 0;
}else return 0;
}


т.е для каждой строки из массива и потом эти SumCalc сложить между собой. Где задать каждой выгружаемой строки переменную.

Из примера выше строк сейчас две, а может быть неограниченно. Так вот строка 1 должна иметь три свои переменные (100 - 0.40 - 0) вторая три свои и тд чтобы вмонтировать их в SumCalc функцию. Ко подскажет? Мб это с циклом for делается? И как приписать этой выгрузке переменные то?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 2
1. Инлайновые комментарии начинаются с"//", а не "#". Комментарии, начинающиеся с "решётки" - анахронизм и его почти нигде не используют.
2. Ваши имена переменных ужасны: где-то нормальные английские слова, где-то --- транслит.
3. Вы сформулировали задачу на удивление непонятно. 3 раза перечитал и толком не понял что вам нужно.
4. Если уж собираете запрос через конкатенацию, то надо хотя бы использовать экранирование. Откройте для себя метод real_escape_string. А иначе, привет sql-инъекции.

Если я правильно понял то, что вам нужно, то..
$sql = $mysqli->query("SELECT * FROM rich_ninja WHERE nick = '".$usdat['nick']."' AND ninja_type='n1'");
$totalSum = 0;
while (null !== $nj1 = $sql->fetch_array()) {
    $totalSum += SumCalc($nj1['percent'], $nj1['price'], $nj1['sbor']);
}
$sql->free();
Ответ написан
@arturka_v_10 Автор вопроса
путем проб нашел тривиальное решение (запись в бд):
<?
$ar = [];
$br = [];
$cr = [];
$query = $mysqli->query("SELECT * FROM rich_ninja WHERE nick = '".$usdat['nick']."' AND ninja_type='n1'");
$rows1=$query->num_rows;
$rowset = $rows1 + 1;
while($nj1 = $query->fetch_array()){
$ar[$nj1['n1']] = $nj1['percent'];
$br[$nj1['n1']] = $nj1['price'];
$cr[$nj1['n1']] = $nj1['sbor'];

$calc = SumCalc($ar[$nj1['n1']],$br[$nj1['n1']],$cr[$nj1['n1']]);

# Обновляем
$sql=$mysqli->query("UPDATE rich_users SET n1 = n1 + '$calc' WHERE email = '$em_ses'");
$sql=$mysqli->query("UPDATE rich_ninja SET sbor = '$dadd' WHERE nick = '".$usdat['nick']."' AND ninja_type='n1'");
}
?>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы