【问题标题】:Why does checking if a variable exists only return a 1 or 0 instead of the value?为什么检查变量是否存在只返回 1 或 0 而不是值?
【发布时间】:2014-06-13 13:46:05
【问题描述】:

我在页面顶部设置以下变量:

$pin = $_GET['Pin'];
$action = $_GET['action'];
$bookingref = $_GET['bookingref'];
$phone1 = $_GET['number1'];
$phone2 = $_GET['number2'];

我正在使用 WAMP 开发我的网站,当页面加载时,我收到每个页面的“未定义索引”警告。

所以我想我会将它们放在 isset 中,以检查它们是否存在。

$pin = isset($_GET['Pin']);
$action = isset($_GET['action']);
$bookingref = isset($_GET['bookingref']);
$phone1 = isset($_GET['number1']);
$phone2 = isset($_GET['number2']);

但是现在当我尝试回显这些值时,我只会得到一个空格或 1。

如何回显变量的值,并保持 isset 检查?

【问题讨论】:

  • 您好,我可以问在投反对票时留下 cmets 吗?否则..这只是无益的。谢谢。
  • 反对者是否愿意发表评论?
  • 投反对票的人可以发表评论吗?模组 - 我能做些什么?
  • 我不会太担心 -1。它可能在那里,因为很明显你没有 RTFM,老实说,这就是我没有赞成修复它的原因。 php.net/manual/en/…
  • 我根本不怎么用 php.net,因为对我来说,它的布局有点混乱。大多数事情都不容易解释。我倾向于使用 W3Schools,因为他们有一个更好的定义网站。

标签: php variables wamp echo isset


【解决方案1】:

因为您分配了isset() 的返回值,即TRUEFALSE

您需要使用isset() 来检查它们是否存在,如果存在则分配变量。

if(isset($_GET['Pin'])){
    $pin = $_GET['Pin']
}

或简写 ternary 替代

$pin = (!isset($_GET['Pin'])) ?: $_GET['Pin'];

【讨论】:

    【解决方案2】:

    isset 返回truefalse,而不是变量的值。这就是它的工作,这就是它在the can 上所说的。典型的成语是:

    $pin = isset($_GET['Pin']) ? $_GET['Pin'] : null;
    

    【讨论】:

      【解决方案3】:

      这是因为isset() 返回一个布尔值(truefalse),而不是变量本身的值。没有内置的方法来实现这一点,但您可以使用用户定义的函数轻松模仿这种行为:

      取自my answer here

      function ifsetor(&$value, $default = null) {
          return isset($value) ? $value : $default;
      }
      

      现在您可以像这样简单地使用它:

      $pin        = ifsetor($_GET['Pin']);
      $action     = ifsetor($_GET['action']);
      $bookingref = ifsetor($_GET['bookingref']);
      $phone1     = ifsetor($_GET['number1']);
      $phone2     = ifsetor($_GET['number2']);
      

      如果需要,您甚至可以使用第二个参数指定默认值。

      【讨论】:

      • 我有类似的功能可以减少重复代码,但ifsetor($_GET['Pin'])如果未设置不会导致未定义索引通知?
      • @Popnoodles:不。变量是通过引用传递的,所以不会引起通知。
      【解决方案4】:

      isset 根据变量是否设置返回真或假。您需要对以下所有变量执行以下操作,

      $pin = isset($_GET['Pin']) ? $_GET['Pin'] : '';
      

      定义:判断一个变量是否已设置且不为NULL

      【讨论】:

        【解决方案5】:

        isset() 返回一个布尔值,它是 True 或 False。 echo 显示“1”表示真,或“”表示假。

        我猜这是使用 isset() 的最佳方法

          <?php
        
          $data =$_POST["firstname"];
          if(isset($data))
           {        
               trim($data);
               echo $data;
           }
         else
          {
               $data="";
          }
        
        
          ?> 
        

        【讨论】:

        • 如果不设置会引起通知。先检查isset($_POST["firstname"])
        猜你喜欢
        • 1970-01-01
        • 2022-12-16
        • 1970-01-01
        • 1970-01-01
        • 2016-08-29
        • 2012-01-07
        • 2013-08-15
        • 2019-03-19
        • 2022-09-23
        相关资源
        最近更新 更多