[英]How to simplify if isset $var else $var = ' ';
例如,如果我想用$ _POST值重新填充表单(有其他应用程序可以解决此问题,但这是最简单的方法),那么在使用它的值之前,我必须始终检查是否已设置$ _POST索引,或者会从php获得通知。
例如:
echo '<input type="text" name="somefield" value="';
if(isset($_POST['somefield']))
{ echo $_POST['somefield']; }
echo '">';
对于复杂的表格,这似乎很麻烦,并且像很多重复一样。 所以我想,让我们提取一个函数:
function varcheck_isset($vartocheck)
{
if(isset($vartocheck))
{return $vartocheck;}
else
{return '';}
}
然后做
echo '<input type="text" name="somefield" value="';
echo varcheck_isset($_POST['somefield']);
echo '">';
使代码更好。
但是当我这样做并且未设置$ _POST ['somefield']时,它说
注意:未定义索引:somefield
:-(
有人对如何进行这项工作有任何想法或建议吗?
编辑:
这就是我最终要做的事情-我接受了Organgepill的回答,只是对其做了一些修改:
function arraycheck_isset($arraytocheck, $indextocheck)
{
if(isset($arraytocheck) && is_array($arraytocheck) && array_key_exists($indextocheck, $arraytocheck))
{ return $arraytocheck[$vartocheck];}
else
{ return '';}
}
Elclanrs在下面的评论也很好。 写吧:
echo $_POST['field'] ?: '';
我个人更喜欢非速记版本,因为除isset()之外,我还可能需要检查其他内容(例如正则表达式)。 这样,我每次都要通过一个函数来保持一致。
您可以使用三元运算符,如果/其他则简写为
echo '<input type="text" name="somefield" value="';
echo isset($_POST['somefield']) ? $_POST['somefield'] : '';
echo '">';
尝试这样的事情:
function postedVal($vartocheck)
{
if(array_key_exists($vartocheck, $_POST))
return $_POST["$vartocheck"];
return '';
}
您的函数总是遇到第一种情况,因为您正在检查是否已设置参数if (isset($_POST[$vartocheck]))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.