首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何简化isset $var isset $var =‘';

如何简化isset $var isset $var =‘';
EN

Stack Overflow用户
提问于 2013-05-22 03:38:10
回答 2查看 228关注 0票数 1

例如,如果我想用$_POST值重新填充表单(针对这个问题还有其他应用程序,但这是最简单的),我必须始终检查是否设置了$_POST索引,然后才能使用它的值,否则我会从php那里得到通知。

例如:

代码语言:javascript
复制
echo '<input type="text" name="somefield" value="';
if(isset($_POST['somefield']))
  { echo $_POST['somefield']; }
echo '">';

对于复杂的形式,这似乎是繁琐的,并像很多重复。所以我想,让我们提取一个函数:

代码语言:javascript
复制
function varcheck_isset($vartocheck)
{
  if(isset($vartocheck))
    {return $vartocheck;}
  else
    {return '';}
}

然后再做

代码语言:javascript
复制
echo '<input type="text" name="somefield" value="';
echo varcheck_isset($_POST['somefield']);
echo '">';

使代码更好。

但是当我这样做的时候,$_POST‘’somefield‘还没有设置,上面写着

注意:未定义索引:某个字段

:-(

有人有什么想法或建议如何使这件事成功吗?

编辑:

以下是我最后所做的--我接受了Organgepill的回答,只是稍微修改了一下:

代码语言:javascript
复制
function arraycheck_isset($arraytocheck, $indextocheck)
{
  if(isset($arraytocheck) && is_array($arraytocheck) && array_key_exists($indextocheck, $arraytocheck))
    { return $arraytocheck[$vartocheck];}
  else
    { return '';}
}

下面的评论也是相当不错的。只需写:

代码语言:javascript
复制
echo $_POST['field'] ?: '';

不过,就我个人而言,我更喜欢非速记版本,因为除了isset() (例如regex )之外,我还可能需要检查其他内容。这样,我每次都要通过一个函数来保持它的一致性。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-22 03:47:55

试着做这样的事情:

代码语言:javascript
复制
function postedVal($vartocheck)
{
  if(array_key_exists($vartocheck, $_POST))
    return $_POST["$vartocheck"];
  return '';
}

您的函数总是碰到第一个情况,因为您正在检查参数设置是否可能是if (isset($_POST[$vartocheck]))

票数 3
EN

Stack Overflow用户

发布于 2013-05-22 03:43:20

您可以使用三元操作符,这几乎是一个速记如果/else

代码语言:javascript
复制
echo '<input type="text" name="somefield" value="';
echo isset($_POST['somefield']) ? $_POST['somefield'] : '';
echo '">';
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16683079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档