我正在处理GROUP BY查询的结果,该查询不会为所有常量排列生成结果。它显然给出了我想要的“未定义索引”通知。
我当然可以使用isset
,但这意味着(索引的)代码重复。另一种方法是使用变量来存储索引,但这意味着每一行这样的代码现在都是两行。我喜欢这行代码的可读性。
$stat->setMapped($companyStats["Account"][mypackage_MyClass::$STATUS_ACCEPTED]);
有什么办法(除了错误操作符@
来避免这个通知)?
我正在处理GROUP BY查询的结果,该查询不会为所有常量排列生成结果。它显然给出了我想要的“未定义索引”通知。
我当然可以使用isset
,但这意味着(索引的)代码重复。另一种方法是使用变量来存储索引,但这意味着每一行这样的代码现在都是两行。我喜欢这行代码的可读性。
$stat->setMapped($companyStats["Account"][mypackage_MyClass::$STATUS_ACCEPTED]);
有什么办法(除了错误操作符@
来避免这个通知)?
您应该从一个定义了所有键的数组开始,然后将您的数组合并到其中。结果将具有您定义的值和未定义的 null (或您设置的任何默认值)。
$allTheKeysYouWant = array('key1' => null, 'key2' => null, ...);
$keysFilled = array_merge($allTheKeysYouWant, $yourArray);
在setMapped函数声明中,通过引用接受参数,即
function setMapped(&$companyStats) {
if (isset($companyStats)) {
....