在PHP中有多个If - else

时间:2011-08-22 10:26:50

标签: php

我的PHP代码就是这样。

if(isset($_GET['id'])) {
    $id = $_GET['id'];
}
if(isset($_GET['subid'])) {
    $subid = $_GET['subid'];
}

如果isset我想变量,如果0则设置为!isset。类似的东西

if(isset($_GET['id'])) {
    $id = $_GET['id'];
} else $id='0';

但是你看到我有多个if。我该怎么做?我需要为每个if写一个else吗?

更新 好。谢谢你的帮助。我做的。但有没有办法再缩短这段代码呢?

$id = isset($_GET['id']) ? $_GET['id'] : 0;
$page = isset($_GET['page']) ? $_GET['page'] : 0;
$subid = isset($_GET['subid']) ? $_GET['subid'] : 0;
$feat = isset($_GET['feat']) ? $_GET['feat'] : 0;

10 个答案:

答案 0 :(得分:4)

$id = isset($_GET['id']) ? $_GET['id'] : 0;

答案 1 :(得分:3)

$id = $subid=0;

if(isset($_GET['id']))
{
$id = $_GET['id'];
}
if(isset($_GET['subid']))
{
$subid = $_GET['subid'];
}

在运行该代码之前,您可以在0处启动所有变量

答案 2 :(得分:2)

使用辅助函数:

function getQSValueOrDefault($name, $default){
   if (!isset($_GET[$name]))
      return $default;
   else
      return $_GET[$name];
}

并使用它:

$id = getQSValueOrDefault('id', 0); 
$subid = getQSValueOrDefault('subid', 0);

答案 3 :(得分:1)

获取输入变量的最短方法如下:

$id = filter_input(INPUT_GET, 'id');

(您无需检查是否设置了值)

其他方法:

// set default values if they are not set
// so that you don't have to check if they are set
$inputs = $_GET + array(
    'id' => 0,
    'subid' => 0,
);

$id = $inputs['id'];
$subid = $inputs['subid'];

或使用三元运算符:

$id = isset($_GET['id']) ? $_GET['id'] : 0;
$subid = isset($_GET['subid']) ? $_GET['subid'] : 0;

答案 4 :(得分:1)

$id = isset($_GET['id']) ? $_GET['id'] : "0";
$subid = isset($_GET['subid']) ? $_GET['subid'] : "0";

答案 5 :(得分:1)

foreach ($_GET as $key=>$value){
  if ($key === 'id' || $key === 'subid'){
    if(isset($value)) {
      $$key = $value;
    }else{
      $$key = '0';
    }
  }
}

答案 6 :(得分:1)

如果你不想要几行:

$id = isset($_GET['id']) ? $_GET['id'] : 0;
$page = isset($_GET['page']) ? $_GET['page'] : 0;
$subid = isset($_GET['subid']) ? $_GET['subid'] : 0;
$feat = isset($_GET['feat']) ? $_GET['feat'] : 0;

然后这可能是另一种选择。

$keys = array('id', 'page', 'subid', 'feat');
foreach($keys as $key)
{
    $$key = isset($_GET[$key]) ? $_GET[$key] : 0;
}

请注意,您放弃了为键设置不同默认值的选项,或者以不同方式处理不同的键。

答案 7 :(得分:0)

默认情况下,您可以将$id$subid声明为0。然后写一个简单的if ( ... ) { }。像这样:

$id = 0;
$subid = 0;

if (isset($_GET['id']))
    $id = $_GET['id'];
if (isset($_GET['subid']))
    $subid = $_GET['subid'];

答案 8 :(得分:0)

如何使用extract() ??

extract($_GET); // it will create all the vairables
// to set default values
$id = isset($id) ? $id : 0;
$subid = isset($subid) ? $subid : 0;

<强>编辑: 更优雅的方式

$id = $subid = 0;  // set default values
extract($_GET); // it will create all the variables and overwrite default values

答案 9 :(得分:0)

您可以使用?:运算符删除额外的keyworks,使其成为每个

的单行
$id= isset($_GET['id']) ? $_GET['id'] : 0;
$subid=isset($_GET['subid']) ? $_GET['subid'] : 0;

您还可以创建一个功能来为您完成工作。

function getOrDefault($name, $default) {
  return isset($_GET[$name]) ? $_GET[$name] : $default);
}

这将允许您使用各种类型的默认值创建额外的包装函数。

function getInt($name) {
  return getOrDefault($name,0);
}

function getString($name) {
  return getOrDefault($name,"");
}

然后您的代码变为

$id = getInt('id');
$subid = get('subid');