This works:
<input type="text" name="foo" value="<?php echo isset($_POST['foo']) ? $_POST['foo'] : '' ?>"/>
This does not:
echo('<input type="text" name="foo" value="'.isset($_POST['foo']) ? $_POST['foo'] : ''.'"/>');
Notice: Undefined index: foo in /srv/www/form.php on line 15
Thanks for any help.
PHP’s operator precedence rules make it evaluate your second example as follows:
That doesn’t make a lot of sense in several ways. And since the result of
isset()is essentially disregarded, this always ends up just trying to print$_POST['foo']. And that results in a notice when it’s not set, of course.Add parentheses around the actual ternary expression. I.e.