Переменная не пустая, когда она должна быть пустой?

<?php
$a = $_POST['a'];
$b = $_POST['b'];
$c;

if(is_numeric($a) && is_numeric($b)){
echo "string";
exit();
}

if(!is_numeric($a) && !is_numeric($b)) {
echo "string";
exit();
}

if(isset($a)){
$resultat=$b*2.54;
echo "string " . $c . " string";
exit();
}

if(isset($b)){
$resultat=$a/2.54;
echo "string " . $c . " string";
exit();
}
?>

I start by checking wether form field 1 & 2 hold nummeric values, then i check if both hold values. That works fine, but when i get down to the second part, it never gets past the first "if" it always sees "a$" as set ...

Должен ли я использовать случай? или ?

0
nl ja de
empty и isset отличаются в PHP. Переменная может быть пустой, но она устанавливается, если она передается из вашей формы.
добавлено автор Stan, источник
Какая часть - та часть, которую она никогда не получает (я не мог полностью следовать). Также: почему вы думаете, что $ a должно быть пустым?
добавлено автор DWright, источник
isset вернет true, даже если переменная пуста. Он просто проверяет, не является ли переменная нулевой.
добавлено автор DWright, источник
Вместо этого попробуйте использовать ! Empty() .
добавлено автор DWright, источник
Посмотрите здесь: techtalk.virendrachandak.com/php-isset- vs-empty-vs-is_null весьма полезен, ИМО.
добавлено автор DWright, источник
Он вводится через форму, если форма оставлена ​​пустой, $ a должен быть пустым, он никогда не пройдет, если (isset ($ a)), даже если $ a не задан и $ b задан
добавлено автор John Doe, источник
Ahh, я вижу, тогда я был неинформирован, что вы рекомендуете использовать?
добавлено автор John Doe, источник

3 ответы

Вы ожидаете пустую строку, когда вы проверяете if (isset ($ a)) . Проблема в том, что вы проверяете, установлено ли это, а не пустым. Переменная устанавливается в вашей первой строке, когда вы ее создаете. Форма передает пустую строку в $ _POST, поэтому вы должны проверить, что $ a не является пустой строкой.

if ($a !== '') {
    $resultat=$b*2.54;
    echo "string " . $c . " string";
    exit();
}
0
добавлено

Ну, технически $ a всегда будет установлен, так как он установлен в $ _POST ['a']. Поэтому он будет «установлен» каждый раз, даже если $ _POST ['a'] пуст. Попробуйте использовать это:

if (!empty($a))

Это проверит, если $ a не пуст.

0
добавлено

Переменная $ a будет иметь значение $ _POST ['a'], когда это значение пусто. PHP будет вызывать ошибку уведомления, поэтому первое, что вам нужно сделать, это использовать isset.

$a = isset($_POST['a']) ? $_POST['a'] : null //Set $a to $_POST['a'] when NOT empty

Функция isset в PHP вернёт true только в том случае, если переменная не задана, даже если значение равно null.

Во-вторых, чтобы проверить, является ли значение нулевым, лучше всего использовать свободное сравнение:

if ($a == null) {
    echo 'A is emty..';
}

Таким образом, значения: «», 0, «null» и «false» будут считаться «пустыми».

Если вы хотите знать, действительно ли значение null, это строгое сравнение, в котором используется тройка «=»:

if ($a === null) {
    echo 'A is empty';
}
0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp