PHP 8 如何简洁地自动递增动态生成的变量

问题描述 投票:0回答:1

PHP 8 发出警告通知,表示正在处理未设置的变量。

PHP 7.4:

// Below would create a variable and set it to 0 + 1
// Below would generate a Notice level error.
$_SESSION['dynamic']['var']++;

PHP 8+:

// Below would create a variable and set it to 0 + 1
// Below would create a warning level error that variable does not exist. 
$_SESSION['dynamic']['var']++;

问题:

使用动态生成的变量(例如

$_SESSION
值),我们如何保持当前操作但防止发出警告。希望不需要添加大量额外的代码。

我能想到的唯一办法就是

$_SESSION['dynamic']['var'] = ($_SESSION['dynamic']['var']??0)+1; 

++
($var??0)+1
,代码相当庞大。

这似乎完全否定了

++
--
方便的递增/递减运算符的整个快捷方式。 PHP 手册页上没有提及这一点。

php
1个回答
0
投票

在 PHP 8 中,您可以使用空合并运算符 (??) 和空安全运算符 (?->) 来简洁地自动递增数组中动态生成的变量。这使您可以优雅地处理未设置的变量,而不会引发警告。

 $_SESSION['dynamic']['var'] ??= 0;
 $_SESSION['dynamic']['var']++;
© www.soinside.com 2019 - 2024. All rights reserved.