我找到了另一种增加未定义数组项的方法。它看起来像是一种 hack,但它很明显并且仍然很短。
假设您需要增加几个嵌套数组的叶值。使用isset()
它可能太烦人了:
<?php
error_reporting(E_ALL);
$array['root']['node'][10]['node'][20]['leaf'][30]['totalCount'] =
isset($array['root']['node'][10]['node'][20]['leaf'][30]['totalCount'])
? ($array['root']['node'][10]['node'][20]['leaf'][30]['totalCount'] + 1)
: 1;
一个数组项的名称在那儿重复了三遍,在你眼中荡漾。
尝试使用&
运算符获取数组项引用。使用不会引起任何通知或错误的参考:
<?php
error_reporting(E_ALL);
$item = &$array['root']['node'][10]['node'][20]['leaf'][30]['totalCount'];
// $item is null here
$item++;
unset($item);
echo $array['root']['node'][10]['node'][20]['leaf'][30]['totalCount']; // 1
它工作得很好,但你也可以避免null
强制0
转换:
<?php
error_reporting(E_ALL);
$item = &$array['root']['node'][10]['node'][20]['leaf'][30]['totalCount'];
// $item is null here
$item = isset($item) ? ($item + 1) : 1;
unset($item);
echo $array['root']['node'][10]['node'][20]['leaf'][30]['totalCount']; // 1
如果您已经在 PHP7 上,请使用 coalesce 运算符而不是isset()
:
$item = ($item ?? 0) + 1;