if(isset($_GET['tag'])) {
define("NJ_THISCATSUB","tag: ".$_GET['tag']);
}
问问题
58 次
2 回答
3
可能有几种方法,其中没有一种是真正推荐的,而不是你所拥有的。
除了省略if假设未定义when未设置时,{}
您无法通过将其打包到三元运算符(例如)中来真正缩短。坚持你所拥有的——它清晰易读、正确。NJ_THISCATSUB
$_GET['tag']
// About as short as you're going to get:
// In other words, your method is fine and I don't recommend changing it.
if(isset($_GET['tag'])) define("NJ_THISCATSUB","tag: ".$_GET['tag']);
三元示例:
但是,NJ_THISCATSUB
在没有 的情况下被定义为 null 或空值$_GET['tag']
,您可以使用三元:
// Define as NULL, absent $_GET['tag'] (not the same as what you have!)
define('NJ_THISCATSUB', isset($_GET['tag']) ? "tag: ".$_GET['tag'] : NULL);
不过,这似乎不是您所追求的行为。
通过短路&&
&&
您可以通过这种方式利用逻辑和逻辑,节省几个字符。如果左侧&&
为真,则继续检查右侧,并且必须评估define()
以执行此操作。如果左侧是FALSE
,它将短路而不评估右侧。因此这有效:
isset($_GET['tag']) && define("NJ_THISCATSUB","tag: ".$_GET['tag']);
不过,上述内容在 PHP 中有点不合常规(如果 PHP 中有约定),并且在 JavaScript 或 Ruby 等语言中更适用。if ()
使用最初发布的更简单的代码,您更有可能遇到 PHP 代码。
// Simple console demonstration
// Define X if $x is set:
php > $x = 123;
php > isset($x) && define('X', $x);
php > echo X;
// 123
// Define Y if $y is set (it isn't)...
php > isset($y) && define('Y', $y);
php > echo Y;
PHP Notice: Use of undefined constant Y - assumed 'Y' in php shell code on line 1
Notice: Use of undefined constant Y - assumed 'Y' in php shell code on line 1
// Oops, Y is not defined as a constant...
于 2012-11-16T17:04:31.810 回答
1
如果您可以允许半填充常量:
define("NJ_THISCATSUB", @"tag: $_GET[tag]");
请注意,这仅在以后可能要调试缺少的输入参数时才有意义。随着isset
它一去不复返,@()
您可以带回通知。
另请注意,仅在双引号字符串上下文中才允许缺少数组键引号。
于 2012-11-16T17:09:05.327 回答