繁体   English   中英

如何简化isset $ var else $ var ='';

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM