2015-05-21 3 views
-5

Итак, если кто-то заполняет мою форму, я получу результаты того, что они заполнили, но если они выберут некоторые цифры в форме выбора, например, 2 человека, 2 ребенка, 1 ребенок, то я хочу отправить общий результат (5) в сообщении PHP, прямо сейчас посылают только значения:Вычислить значения PHP

$message = 
'Persons: ' . $_POST['pers']. "\n" . 
'Kids: ' . $_POST['kids']. "\n" . 
'Babys: ' . $_POST['babys']. "\n" . 

Так как отправить общий вывод выбранных значений? И показать это как-то вроде этого:

'Total person: ' . $_POST['totalpersons']. "\n" . 

Так я имею в виду: Если пользователь выбирает 2-х человек, 2 детей и 1 ребенок в форме, тогда я хочу, чтобы отправить Общее количество лиц, так что : (3 + 2 + 1 =) Я хочу только эхо всего лиц, так что:

Это решение для меня:

$totalpersons = $_POST['pers'] + $_POST['kids'] + $_POST['babys']; 

'Total persons: ' . $totalpersons . '\n' . 
+0

В вашем примере, является '$ _POST [«дети»]' установить на номер '2 'или установить строку' 2 kids'? –

+0

Сделайте некоторые арифметические операции. Всего человек = люди + дети + дети – fbas

+0

есть ли причина, почему простое дополнение не будет работать? –

ответ

0

Это просто:

$totalpersons = $_POST['pers'] + $_POST['kids'] + $_POST['babys']; 

'Total persons: ' . $totalpersons . '\n' . 

Предполагается, что эти 3 переменные POST в вашем примере содержат числа.

0

Прежде всего, вы хотите проверить, действительно ли ваши значения являются числами. is_numeric() подходит для этого. После этого вы можете просто сложить цифры:

$persons = $_POST['pers']; 
$kids = $_POST['kids']; 
$babys = $_POST['babys']; 

if(is_numeric($persons) && is_numeric($kids) && is_numeric($babys)) { 
    $output = $persons + $kids + $babys; 
} else { 
    // find a different solution 
} 

Вы также можете думать о том, что произойдет, если кто-то дает вам один с половиной ребенка ... и что ты собираешься с ним делать.

+0

Зачем повторно объявлять, а не напрямую использовать значения '$ _POST'? –

+0

Это делает его более читаемым. И код также становится более удобным. Например. если вы хотите, чтобы некоторые конверсии по значениям позже, таким образом, вы можете легко сделать это, не изменяя значения в '$ _POST' или не изменяя несколько точек вашего кода. Но в основном это менее раздражает тип. :-) – Timo

1

Intval должна быть полезной

$totalpersons = intval($_POST['pers']) + intval($_POST['kids']) + intval($_POST['babys']); 
+0

Лично я бы этого не сделал. Если по какой-то причине переменные POST не содержат Int, но вместо этого строки не могут быть преобразованы в ожидаемый int, вы можете получить некоторые действительно странные результаты, преобразовывая их в любом случае. – icecub

3

фанк метод

echo array_sum($_POST['pers'],$_POST['kids'],$_POST['babys']); 
+1

Какая польза от просто добавления значений?Не делает код короче и может добавить нежелательные побочные эффекты, если кто-то точно не знает, что делает этот метод? – Timo

+3

его php, если вы не можете сделать это 10 способов, вы не достаточно сильно заикаетесь. –

+0

Ну, кроме того, что переопределение переменных не имеет ничего общего с использованием 'array_sum()' или нет, я действительно просто спросил честное и искреннее любопытство не потому, что хотел быть мудаком. – Timo

0

Получить значения, получить значение interger используя intval функцию и добавить их. Также используйте isset, чтобы узнать, установлены ли все переменные, иначе вызовите ошибку.

if(isset($_POST["pers"] && isset($_POST["kids"] && isset($_POST["babys"]){ 
$total = intval($_POST["pers"]) + intval($_POST["kids"]) + intval($_POST[ 
"babys"]); 
echo $total; 
} 
else{ 
//echo an error. 
echo "inputs missing"; 
} 

с помощью IsSet рекомендуется, иначе, если один из них не установлен, то будет давать неправильные ответы

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