我厌倦了使用代码:
$blog = isset($_GET['blog']) ? $_GET['blog'] : 'default';
但我无法使用:
$blog = $_GET['blog'] || 'default';
有没有办法在不使用isset()
的情况下执行此操作?
答案 0 :(得分:4)
您必须等待下一版本的PHP才能获得coalesce operator
// Uses $_GET['user'] if it exists -- or 'nobody' if it doesn't
$username = $_GET['user'] ?? 'nobody';
// Loads some data from the model and falls back on a default value
$model = Model::get($id) ?? $default_model;
答案 1 :(得分:1)
编写辅助函数。
function arrayValue($array, $key, $default = null)
{
return isset($array[$key]) ? $array[$key] : $default;
}
用法:
$blog = arrayValue($_GET, 'blog');
答案 2 :(得分:0)
没有比这更简短的方法。您可以创建一个处理$ _POST和$ _GET变量的类,并在您调用博客时使用它。
示例:
$ blog =输入:: put("博客");
输入类将有一个静态方法,它将确定何时输入具有$ _POST和$ _GET或null值。
答案 3 :(得分:0)
您可以编写自定义帮助程序:
function get($name, $default=null){
return isset($_GET[$name]) ? $_GET[$name] : $default;
}
$blog = get('blog', 'default');
或者,你有filter extension,例如:
$blog = filter_input(INPUT_GET, 'blog') ?: 'default';
它没有明显缩短,但允许进一步验证和消毒(并且在自定义函数中包装也很简单。)