我找到了另一种方式来增加不确定的数组项。它看起来像一种黑客,但它很明显,而且还很短。
假设您需要增加少数嵌套数组的叶值。使用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,使用聚结与基准不造成任何通知或错误代理运营商而不是isset()
:
$item = ($item ?? 0) + 1;
那么,这是一个捕捉22位,你有你自己在那里。无论是前进还是禁止通知(它们不会停止脚本执行,它们就像PHP的说法:“嘿,现在......”),或者在使用它之前初始化数组元素,而PHP会让你一个人离开。 – Crackertastic
要么使用'@'这是非常特别为此内置的语言(重要的:通知仍然生成,例如日志,只是没有默认显示),或创建一个增量包装函数inc(&$ var) {return ++ $ var; }'它隐式地创建本地var名称。 – mario