为什么检查变量是否存在只返回1或0而不是返回值?


Why does checking if a variable exists only return a 1 or 0 instead of the value?

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

$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检查?

因为您正在分配isset()的返回值,该值为TRUEFALSE

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

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

或简写的三进制替代

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

isset返回truefalse,而不是变量的值。这是它的职责,罐头上是这么写的。典型的习语是:

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

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

摘自我的回答:

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']);

如果你愿意,你甚至可以使用第二个参数指定一个默认值。

isset 根据变量是否设置返回true或false。你需要做的是像下面这样对所有变量

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

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

isset()返回一个布尔值True或False。 echo为true时显示"1",为false时显示"

我想使用isset()的最好方法是
  <?php
  $data =$_POST["firstname"];
  if(isset($data))
   {        
       trim($data);
       echo $data;
   }
 else
  {
       $data="";
  }

  ?>