如果我想重新填充一个带有$ _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()函数 - 例如一个正则表达式。这种方式每次都通过函数来保持一致。
在现代的PHP中,你可以这样做:echo $ _POST ['field']?''' – elclanrs
@elclanrs这是一个很好的建议,谢谢!为什么不把它作为答案? – olli