я пытаюсь суммировать переменную в цикле Parse PHP-фрейм, он работает, но не получает ожидаемого результата, я ожидаю, что 1 + 1 равен 2, но получаю 11 и выводит на печать обе переменные, используемые для выполнения суммы,
мой код
function amount()
{
$ip=getUserIP();
$crat_item= new ParseQuery("Cart");
$crat_item->EqualTo("ipAddress", $ip);
$crat_item->each(function($object){
GLOBAL $sum;
$total=0;
$a=$object->get('quantity');
$prMSP=intval($a);
$fMSP=array('msp' => $prMSP);
$sum=array_sum($fMSP);
$total+=$sum;
echo "$total";
});
}
Вы сбрасываете свой $total
переменная в цикле. Так что это на самом деле печать 1
& затем 1
опять не 11
,
Измените его, чтобы сделать следующее;
$total = 0; // define $total variable here..
$crat_item->each(function($object) {
GLOBAL $sum;
$a = $object->get('quantity');
$prMSP = intval($a);
$fMSP = array('msp' => $prMSP);
$sum = array_sum($fMSP);
$total+=$sum;
});
// now echo total
echo "$total";
Обратите внимание, как мы переместили создание экземпляра переменной из функции? Это остановит его «воссоздание» каждый раз, когда вы перебираете ответ на данные. То же самое с вашим echo
из $total
,
это окончательный ответ на вопрос abobe `function amount ()
{
$ip=getUserIP();
GLOBAL $total;
$total=0;
$crat_item= new ParseQuery("Cart");
$crat_item->EqualTo("ipAddress", $ip);
$crat_item->each(function($object){
GLOBAL $sum;
GLOBAL $total; //convert it in global here
// $total=0;
// GLOBAL $sum;
$a = $object->get('productMSP');
$prMSP = intval($a);
$fMSP = array('msp' => $prMSP);
$sum = array_sum($fMSP);
$total+=$sum;}); echo "$total";
}`