【问题标题】:Check if php get variable is set to anything?检查 php get 变量是否设置为任何值?
【发布时间】:2013-06-04 16:05:14
【问题描述】:

我需要检查变量是否设置为某些东西。到目前为止,我一直在使用 strlen(),但这真的很尴尬,因为我很确定这不是一个非常有效的函数再次使用。

如何更有效地执行此类检查:

if (strlen($_GET['variable']) > 0)
{
    Do Something
}

请注意,如果$_GET['variable'] = '',我不希望它做任何事情

只是为了澄清我的意思 - 如果我有 www.example.com?variable=&somethingelse=1 我不希望它渗透到那个 if 语句

【问题讨论】:

  • 这并不尴尬,它可以随心所欲地工作,并且可读性强。
  • 只是为了澄清我的意思 - 如果我有 www.example.com?variable=&somethingelse=1 我不希望它渗透到 if 语句
  • Awww 我尽量不要对我的脚本感到尴尬,但有时很难!

标签: php get strlen


【解决方案1】:

如果您只想检查是否设置了任何 $_GET,而不知道值,只需计算 $_GET 数组:

<?php
if (count($_GET) == 0):
    // do your stuff
else:
    // do your other stuff
endif;
?>

【讨论】:

    【解决方案2】:

    你可以试试empty

    if (!empty($_GET['variable'])) {
      // Do something.
    }
    

    从好的方面来说,它还会检查变量是否已设置,即无需单独调用isset

    关于不调用isset 存在一些混淆。来自documentation

    如果变量不存在或它的值等于 FALSE,则认为该变量为空。如果变量不存在,empty() 不会生成警告。

    还有……

    这意味着 empty() 本质上是简洁的等价于 !isset($var) || $var == false。

    【讨论】:

    • @Winston,来自documentation:如果一个变量不存在或者如果它的值等于 FALSE,它就被认为是空的。如果变量不存在,empty() 不会生成警告。
    • 你是对的!抱歉……但是之前,如果你这样写,可能会引起注意。
    • @Winston,我曾经也对此感到困惑,但我已经看到它在很长一段时间内一直在使用,没有任何通知(我总是将error_reporting 保持在最高位置)。知道是哪个版本做出了这种改变吗?
    • 是的,我在 php 文档中看到的是它说它正在改变 empty() 在版本之间的响应 - 几乎没有激发信心
    • @AmyNeville,在哪里?我没有在文档的更改日志中看到此行为。最接近的是5.0.0 中的更改,其中“没有属性的对象不再被视为空”。但我认为这不适用于您的场景。
    【解决方案3】:
     if(isset($_GET['variable']) && $_GET['variable']!=""){
    
    }
    

    【讨论】:

    • 如果输入有value = "" isset 为真但仍为空怎么办
    • 是的,这就是 Q 想要的:请注意,如果 $_GET['variable'] = ''
    • @AxelAmthor,但是如果 value = "",上面的代码会做一些事情。它已设置,因此 if 条件将为 true
    • 这似乎现在可以工作并且比 strlen 更有效率可能嗯。所以很遗憾,显然没有内置功能:)
    • @AmyNeville,实际上,有一个内置函数:empty,正如我在下面的回答中所解释的那样。
    【解决方案4】:

    怎么样

    if ($_GET['variable'])
    {
         Do Something
    }
    

    【讨论】:

    • 或者也许:if ($_GET['variable'] != "")
    【解决方案5】:
    if(isset($_GET['variable']) && !empty($_GET['variable']))
    {
    //Do Something
    }
    

    【讨论】:

    • 如果您要使用empty,则无需致电isset。详情可以看我的回答或查看documentation
    【解决方案6】:

    您可以使用isset() 检查,但我更愿意使用!= '' 检查非空白字符

    if (isset($_GET['variable'])) && ($_GET['variable']) != '')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-15
      • 2021-05-12
      • 1970-01-01
      • 2018-05-24
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多