我有一个简单的HTML表单,我正在使用PHP从myfield
获取文本值来处理数据。
我正在尝试填充文本输入,如果一个值已经存在于PHP会话中,像这样
if (isset($_SESSION['myfield'])) {
$myfield = filter_var($_SESSION['myfield'], FILTER_SANITIZE_STRING);
} else {
$myfield = ''
}
echo '<input type="text" value="' . $myfield . '">';
这似乎是一个冗长的方法,有没有更好的方法,我可以做到这一点,以减少膨胀。
是一个好的方法来使用三元操作符吗?
这是我能找到的最短的代码:
echo '<input type="text" value="' . ($_SESSION['myfield'] ?? '') . '">';
更多Null合并运算符:https://www.php.net/manual/en/language.operators.comparison.php
对于过滤器变量,您需要在函数内部使用相同的操作符:
echo '<input type="text" value="' . (filter_var($_SESSION['myfield'] ?? '', FILTER_SANITIZE_STRING) : '') . '">';
或者实现一次过滤多个变量的函数:
function filterMySessionVars() {
$myVars = ['myfield1','myfield2',];
foreach($myVars as $v) {
$_SESSION[$v] = filter_var($_SESSION[$v] ?? '', FILTER_SANITIZE_STRING);
}
}
filterMySessionVars();
echo '<input type="text" value="'.$_SESSION['myfield'].'">';
您可以尝试使用一行if,然后将其嵌入行中也许像这样的东西应该工作:
echo '<input type="text" value="' . (isset($_SESSION['myfield'])) ? $_SESSION['myfield'] : '') . '">';