以前PHP 7.4中的代码如下所示:
$_SESSION['message'] .= "Sorry; That file or location can not be found.";
它将附加到现有字符串或设置为新字符串的内容。而且我的错误日志(关闭通知)将非常空。
现在在PHP 8.0+中,undefined array elements(以及其他内容)被分类为警告而不是通知。
PHP警告:第29行/index.php中未定义的数组键"message"
我理解这个 * Warning * 背后的概念逻辑,但是在上面代码的示例中,它需要一个冗长的解决方案;比如:
if(array_key_exists('message', $_SESSION)){
$_SESSION['message'] .= "Sorry; That file or location can not be found.";
}
else {
$_SESSION['message'] = "Sorry; That file or location can not be found.";
}
或者可能;
$_SESSION['message'] = (array_key_exists('message', $_SESSION)?$_SESSION['message']:"")
."Sorry; That file or location can not be found.";
这对于成千上万的会话元素在几十个网站是真的看起来粗糙;更难阅读,一般是一个很大的膨胀,以避免警告消息,似乎没有任何意义。
我不想关闭警告消息。
是否有任何可能的变通办法;比如php.ini中的任何方法,以避免这种触发器的连接操作(.=
)?我们可以设法逃脱超全局或更具体的SESSION
数据(和POST
数据可能),这是不可能知道它的值连接之前.
1条答案
按热度按时间eqqqjvef1#
更简洁的解决方法可以是:
这可能是最好的。