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

时间:2014-06-13 13:46:06

标签: php variables wamp echo isset

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

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

5 个答案:

答案 0 :(得分:3)

isset会返回truefalse,而不是变量的值。这是它的工作,它在the can上的内容。典型的习语是:

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

答案 1 :(得分:3)

因为您指定了isset()的返回值,即 TRUE FALSE

您需要使用isset()检查它们是否存在,然后分配变量。

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

或简写ternary替代

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

答案 2 :(得分:2)

这是因为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']);

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

答案 3 :(得分:2)

isset 根据变量设置或不设置返回true或false。你需要做的是对所有变量,如下,

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

定义:确定变量是否已设置且不是NULL

答案 4 :(得分:0)

isset()返回一个True或False的布尔值。 echo显示“1”表示true,或“”表示false。

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

  <?php

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


  ?>