提问人:Alberto Lancellotti 提问时间:1/26/2023 更新时间:1/30/2023 访问量:36
PHP 在增量之前初始化多元数组
PHP initialize multimensional arrays before increment
问:
我必须在一个旧的 php 项目中执行一个大的代码修复。 问题如下:我有许多语句,其中代码试图将整数添加到未初始化的多元数组中,如下所示:
$array_test['first']['two']['three'] += 10;
但是$array_test是这样声明的:
$array_test = array();
这种情况在项目中给了我很多警告,因为这个 Code Pattern 发生了 16k 次。
有什么方法可以解决这个问题,比如添加这样的语句:
if (!isset($array_test['first']['two']['three']))
{
$array_test['first']['two']['three']=0;
}
然后
$array_test['first']['two']['three'] += 10;
但是我想只在一行代码中完成它(对于语句、if isset 和 increment),以便在我的项目中进行大而安全的替换。
有人可以帮我吗? 谢谢,对不起我的英语。
答:
1赞
mickmackusa
1/27/2023
#1
PHP 还没有(可能永远不会)有一个“空合并加法运算符。
从 PHP7.0 开始,您可以通过将 null 合并到 0 来避免调用。演示isset()
$array_test['first']['two']['three'] = ($array_test['first']['two']['three'] ?? 0) + 10;
如果低于 PHP7(一直到至少 PHP4.3),则可以使用内联(三元)条件。演示
$array_test['first']['two']['three'] = (isset($array_test['first']['two']['three']) ? $array_test['first']['two']['three'] : 0) + 10;
评论
0赞
Alberto Lancellotti
1/30/2023
谢谢!这个版本是否也与 PHP 7 <版本兼容?
0赞
mickmackusa
1/30/2023
空合并算子诞生于 PHP7。如果你的老板不愿意升级到受支持的PHP版本,那么你就要辞职,找一份可以培养现代编程技能的工作。
评论
isset
$array_test
['first']
$array_test['first'] = array();
$array_test['first']['two'] = array();
$array_test['first']['two']['three']=0;
+=