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