我的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');