例如,如果我想用 $_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() 之外,我可能还需要检查其他内容 - 例如正则表达式。这样我每次都通过一个函数来保持它的一致性。