我在我的一个存储库中的Symfony 2 Web项目中有以下代码:
$result = $qb->getQuery()->getResult();
$converted = $this->transformArray($result);
return $converted[0];
我的问题:
我收到以下错误,指向最后一行:
Notice: Undefined offset: 0
背景
我的函数transformArray()
执行以下操作:
private function transformArray($rows)
{
foreach ($rows as $i => $row) {
$rows[$i]['hexcolor'] = $this->convertColor($row['colorR'], $row['colorG'], $row['colorB']);
};
return $rows;
}
在此操作之后,我的变量$converted
包含一个这样的数组,只有一个结果:
array (
0 =>
array (
'subjectId' => 1234,
'subjectName' => 'English',
'hexcolor' => '#ff00'
)
)
有人可以解释为什么做$converted[0]
(=试图访问0索引)导致未定义的偏移错误?将数组输出粘贴到PHPFiddle并尝试访问0索引完全正常。为什么它不在我的Symfony 2项目中?
答案 0 :(得分:1)
这是一个额外的Mile与你的代码派上用场的地方。这样,它就像添加一些额外的代码行一样简单:
<?php
$result = $qb->getQuery()->getResult();
// DOES THE QUERY EVEN RETURN ANY RESULTS?
// IF NOT, SET $converted TO EMPTY ARRAY: WHY NOT?
$converted = (!empty($result)) ? $this->transformArray($result) : array();
// RETURN $converted[0] ONLY IF IT EXISTS, OTHERWISE NULL
return isset($converted[0]) ? $converted[0] : null;