多个如果 - 否则在 php 中


Multiple If - else in php

我的PHP代码看起来像这样。

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

我想在isset时获取变量,如果!isset则设置为 0 . 类似的东西

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

但正如你所看到的,我有多个如果。我该怎么做?我需要为每个如果写其他内容?

更新好的,谢谢你的帮助。我成功了。但是有没有办法再次缩短这段代码呢?

$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;
$id = isset($_GET['id']) ? $_GET['id'] : 0;
$id = $subid=0;
if(isset($_GET['id']))
{
$id = $_GET['id'];
}
if(isset($_GET['subid']))
{
$subid = $_GET['subid'];
}

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

使用帮助程序函数:

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

并像这样使用它:

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

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

$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;
$id = isset($_GET['id']) ? $_GET['id'] : "0";
$subid = isset($_GET['subid']) ? $_GET['subid'] : "0";
foreach ($_GET as $key=>$value){
  if ($key === 'id' || $key === 'subid'){
    if(isset($value)) {
      $$key = $value;
    }else{
      $$key = '0';
    }
  }
}

如果您不想要几行,例如:

$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;
}

请注意,您将失去为键设置不同默认值或以不同方式处理不同键的选项。

默认情况下,

您可以将$id$subid声明为 0。然后写一个简单的if ( ... ) { }.喜欢这个:

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

如何使用 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

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

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