2013-06-13 4 views
1

Не уверен, что я делаю здесь неправильно, но выход всегда имеет значение null. Сценарий должен выводить «вы не выбрали ответ», только если ответа не было выбрано, но в противном случае он должен вывести ответ:PHP if null echo else echo

Я обновил сценарий, как упоминалось, но все равно получаю пустой вывод, даже когда дается ответ:/

Спасибо за всю помощь до сих пор, ребята, но даже код ниже не работает, теперь он просто выводится как пустой, если нет anwser, но если вы его заполняете, он правильно отвечает за эхо.

if (empty($a1)) { 
echo"<li>\n<h2>1. " . $q1[0] . "</h2>\n" 
    . "<p>You did not select an answer</p>\n" 
    . "</li>\n"; 

} 

else { 

echo"<li>\n<h2>1. " . $q1[0] . "</h2>\n" 
    . "<p><strong>" . $q1[$a1] . ":</strong></p>\n" 
    . "<p>" . $r1[$a1] . "</p>\n" 
    . "</li>\n"; 

} 

Полностью забыл показать эту часть!

// get local copies of single answers 
$a1 = trim(isset($_POST['a1'])?$_POST['a1']:99); 
$a3 = trim(isset($_POST['a3'])?$_POST['a3']:99); 
$a4 = trim(isset($_POST['a4'])?$_POST['a4']:99); 
$a5 = trim(isset($_POST['a5'])?$_POST['a5']:99); 
+0

И ошибка? –

ответ

1

пустая строка не null

$a1 = ''; 
    if ($a1 == null) // is wrong 

должен быть

$a1 = ''; 
if ($a1 === '') 

или

if (empty($a1)) 
+1

'$ a = '';' делает равным 'null', когда не использует строгие сравнения – Prisoner

+0

Спасибо @Prisoner, обновил ответ –

+0

Обновлен, но все еще получает пустой вывод при выборе ответа –

0

пустой не то же самое, как нуль попробовать

if ($a === '') это уважает также тип, который лучше по качеству кода

4

Не используйте if($a1 == null) использование if(empty($a1)) или if(isset($a1))

+0

'isset()' вернет true, если вы присвоили переменную пустой строке ... – DaGardner

+0

Конечно, поэтому я сказал 'OR', но спасибо за указание на это. –

+0

См. Отредактированный вопрос выше, все еще не радость, должно быть что-то еще, может быть, в моем массиве ответов? –

0
if (empty($a1)) { 
    echo"<li>\n<h2>1. " . $q1[0] . "</h2>\n" 
    . "<p>You did not select an answer</p>\n" 
    . "</li>\n"; 
} 
else { 
    echo"<li>\n<h2>1. " . $q1[0] . "</h2>\n" 
    . "<p><strong>" . $q1[$a1] . ":</strong></p>\n" 
    . "<p>" . $r1[$a1] . "</p>\n" 
    . "</li>\n"; 
} 

Использование empty вместо null проверки

0

'нулевой' не то же самое, что и false, или «.null» - это объект.

0

В PHP, пустая строка ($ а) & пустой массив ($ б) возвращает истину, если вы проверяете следующий экспресс:

$ а = ''; $ b = array();

$ а == NULL -> ИСТИНА $ б == NULL -> ИСТИНА

также

$ а == 0 -> ИСТИНА

Таким образом, вы должны использовать «= == 'для проверки, или в вашем коде всегда есть неожиданный результат.

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