#php #mysql #arrays
#php #mysql #массивы
Вопрос:
Данные:
- MEL1INFA73 подтверждено. Ksh29.00, отправленные в Safaricom предложения для учетной записи Tunukiwa 21/5/18 в 3:29 утра, Новый баланс M-PESA равен Ksh5.50. Стоимость транзакции, Ksh0.00.
- MEE6ESSVCS подтверждено. 2 240.00 шиллингов, выплаченных Naivas West End Plaza. 5.04.18 14: 13.Новый баланс M-PESA составляет 4 753.50 шиллингов. Стоимость транзакции, Ksh0.00.
- MEF1EZ0MNR подтверждено.15/5/18 в 9:36 утра вы получили 10 000,00 КШ от Barclays Bank K LTD 303031. Новый баланс M-PESA составляет 14 775,50 Кш. Покупайте товары с помощью M-PESA.
Следующий код генерирует сумму цифр в каждой строке, отличной от всего столбца:
<?php
if(count($json_data["data"]) > 0){ ?>
<?php $_count = 1;
foreach($json_data["data"] as $row){ ?>
<tr>
<td><?php
$str =$row["msg_body"];
preg_match_all("/kshs*(d .d )/i", $str, $matches);
echo array_sum($matches[1]); ?></td>
</tr>
<?php $_count ; }
?>
<?php }else{
}
?></td>
Комментарии:
1. Вы думали о том, чтобы иметь итоговый результат
array_sum($matches[1])
?2. как это сделать, пожалуйста?
3. Вам нужны итоговые результаты цифр для всех трех сообщений?
4. да, сообщения хранятся в разных строках
Ответ №1:
Если я правильно понимаю, вам просто нужно сохранить всю сумму, а затем распечатать ее где-нибудь. Что-то вроде:
<?php
if(count($json_data["data"]) > 0){ ?>
<?php $_count = 1;
$totalSum = 0;
foreach($json_data["data"] as $row) { ?>
<tr>
<td><?php
$str =$row["msg_body"];
preg_match_all("/kshs*(d .d )/i", $str, $matches);
$rowSum = array_sum($matches[1]);
$totalSum = $rowSum;
echo $rowSum;?></td>
</tr>
<?php $_count ; }
?>
<tr><td>Total sum: <?php echo $totalSum; ?></td></tr>
<?php }else{
}
?></td>
Вы можете настроить свой html, конечно.
Ответ №2:
Поскольку мы имеем дело с массивом и preg_match_all, то я полагаю, что вы могли бы разбить массив и выполнить один preg_match_all вместо его зацикливания.
$AllItems = implode(" ", $json_data["data"]);
preg_match_all("/kshs*(d .d )/i", str_replace(",","",$AllItems), $matches);
$total = array_sum($matches[1]);
Пример:
https://3v4l.org/Pk7YT
Редактировать заметил, что в качестве разделителей тысяч были запятые. Это необходимо удалить для регулярного выражения и суммирования для работы с str_replace.