在一行中删除“未定义的索引”而不重复

时间:2012-05-31 08:07:43

标签: php

我正在处理 GROUP BY 查询的结果,该查询不会产生所有常量排列的结果。它显然给出了我想要的“未定义索引”通知。

当然我可以使用isset,但这意味着重复代码(索引)。另一种方法是使用变量来存储索引,但这意味着每个这样的代码行现在都是两行。我喜欢这行代码的可读性。

$stat->setMapped($companyStats["Account"][mypackage_MyClass::$STATUS_ACCEPTED]);

有没有办法(错误操作符@除外)以避免此通知?

2 个答案:

答案 0 :(得分:1)

您应该从一个定义了所有键的数组开始,然后将您的数组合并到其中。结果将使您的值在它们被定义的位置,并且null(或您设置的任何默认值)它们不是。

$allTheKeysYouWant = array('key1' => null, 'key2' => null, ...);
$keysFilled = array_merge($allTheKeysYouWant, $yourArray);

答案 1 :(得分:1)

在setMapped函数声明中,通过引用接受参数,即

function setMapped(&$companyStats) {
    if (isset($companyStats)) {
         ....