if(isset($_GET['tag'])) {
define("NJ_THISCATSUB","tag: ".$_GET['tag']);
}
答案 0 :(得分:3)
可能有几种方式,没有一种方法可以推荐而不是你拥有的方式。
如果忽略{}
,如果NJ_THISCATSUB
被假定为 未定义,则无法将其打包成三元运算符(例如) 1}}未设置时。坚持你所拥有的 - 清晰,可读,正确。
$_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
的情况下被定义为空值或空值,您可以使用三元组:
$_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
以上在PHP中是非常规的(如果在PHP中存在诸如惯例之类的东西),并且在JavaScript或Ruby等语言中更像是在家里。使用您最初发布的更简单的isset($_GET['tag']) && define("NJ_THISCATSUB","tag: ".$_GET['tag']);
,您更有可能遇到PHP代码。
if ()
答案 1 :(得分:1)
如果你可以允许半满的常数:
define("NJ_THISCATSUB", @"tag: $_GET[tag]");
请注意,这只有在以后可能要调试缺少的输入参数时才有意义。随着isset
它永远消失,@()
你可以带回通知。
另请注意,缺少数组键引号只能在双引号字符串上下文中使用。