【发布时间】:2016-09-19 13:56:39
【问题描述】:
我的一个存储库中的 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 项目中没有?
【问题讨论】:
-
发布你的 transformArray() 值
-
确认
$result有一个值(即您的查询没有失败)? -
我会:要查看任何数组中的第一个条目:
reset $converted;然后:current($converted);将获得第一个条目的值,key($converted);将获得该条目的索引。这适用于所有 PHP 数组。 -
'key($converted)' 给我 0。但是为什么还有这个偏移错误???
-
调试:
var_dump(!empty($converted), $converted);应该返回true和一个数组或实现ArrayAccess的对象。不管怎样,当您尝试访问它时,您会看到导致未定义索引的原因。