例如,如果我想用$_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‘还没有设置,上面写着
注意:未定义索引:某个字段
:-(
有人有什么想法或建议如何使这件事成功吗?
编辑:
以下是我最后所做的--我接受了Organgepill的回答,只是稍微修改了一下:
function arraycheck_isset($arraytocheck, $indextocheck)
{
if(isset($arraytocheck) && is_array($arraytocheck) && array_key_exists($indextocheck, $arraytocheck))
{ return $arraytocheck[$vartocheck];}
else
{ return '';}
}下面的评论也是相当不错的。只需写:
echo $_POST['field'] ?: '';不过,就我个人而言,我更喜欢非速记版本,因为除了isset() (例如regex )之外,我还可能需要检查其他内容。这样,我每次都要通过一个函数来保持它的一致性。
发布于 2013-05-22 03:47:55
试着做这样的事情:
function postedVal($vartocheck)
{
if(array_key_exists($vartocheck, $_POST))
return $_POST["$vartocheck"];
return '';
}您的函数总是碰到第一个情况,因为您正在检查参数设置是否可能是if (isset($_POST[$vartocheck]))。
发布于 2013-05-22 03:43:20
您可以使用三元操作符,这几乎是一个速记如果/else
echo '<input type="text" name="somefield" value="';
echo isset($_POST['somefield']) ? $_POST['somefield'] : '';
echo '">';https://stackoverflow.com/questions/16683079
复制相似问题