未定义的偏移量:0表示PHP数组

时间:2016-09-19 13:56:39

标签: php arrays symfony offset

我在我的一个存储库中的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项目中?

1 个答案:

答案 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;