Как сумма переменной PHP, только если она setada?
у Меня есть несколько сценариев, которые делают некоторые вычисления с данными, поступающими из формы, и для достижения суммы всех их создал другой файл, где я делаю sum:
include "varios.php";
$total = $var1 + $var2 + $var3; /// etc
тем не менее, я хочу, чтобы некоторые переменные, которые будут прочитаны, поэтому я попытался:
$total = isset($var1) + isset($var2) + isset($var3);
, Но, за то, что я понял, так он считает, 1
, если он установлен, и 0
если это не так, независимо от того, значение пожаловать формы.
, Как было этот вопрос уже получил решить (но я не знаю, лучше), вот так:
if (!isset($var1)){
$var1 = 0;
}
, То у меня больше нет проблем, но из этого, что я был в сомнении, почему первый способ не работает. Делает иначе, я думаю, что я считал это тип переменной boolean... Так ли это? Как это происходит, и почему?
3 answers
PHP делает cast boolean практически время или expresão находится путем суммирования результатов isset()
, которые могут быть 1 или 0.
<?php
$var = 5;
$var2 = 4;
$total = isset($var) + isset($var2) + isset($var3);
echo $total;
Выход 2, а не 9, как и ожидалось, php понимаете выражение как: 1+1+0
Вы Можете просто установить значение 0
таким образом, при указании значения пожаловать форм. Пример:
$var1 = isset($_POST['number1']) ? $_POST['number1'] : 0;
Существуют различные средства, чтобы устранить.
Посмотрите пример, используя переменные переменные array_sum()
$sum = array();
$v = 'var1'; $sum[] = (!isset($$v)? 0 : $$v);
$v = 'var2'; $sum[] = (!isset($$v)? 0 : $$v);
$v = 'var2'; $sum[] = (!isset($$v)? 0 : $$v);
$total = array_sum($sum);
echo $total;