2016-09-19 15 views
0

I私のリポジトリの1つで私のSymfony 2 Webプロジェクトに次のコードを持っている:未定義のオフセット:0 PHPの配列で

$result = $qb->getQuery()->getResult(); 
$converted = $this->transformArray($result); 
return $converted[0]; 

私の問題:私はどのポイント次のエラーを取得する

Notice: Undefined offset: 0 

背景:

最後の行に

My機能transformArray()は以下のん:

array (
    0 => 
    array (
    'subjectId' => 1234, 
    'subjectName' => 'English', 
    'hexcolor' => '#ff00' 
) 
) 

誰が、なぜ$converted[0]をやって(=しようとして説明することができます:この操作の後

private function transformArray($rows) 
    { 
     foreach ($rows as $i => $row) { 
      $rows[$i]['hexcolor'] = $this->convertColor($row['colorR'], $row['colorG'], $row['colorB']); 
     }; 

     return $rows; 
    } 

、私の変数$convertedは、1つの結果だけで、このような配列が含まれています0インデックスにアクセスすると)定義されていないオフセットエラーが発生しますか?配列の出力をPHPFiddleに貼り付け、0のインデックスにアクセスしようとすると完全に正常に動作します。 symfony 2のプロジェクトでどうしてそれはできませんか?

+0

ポストあなたのtransformArray()値 –

+0

'$のresult'は、値(すなわちを持って、あなたのクエリがないことを確認します。そのことによって、そのようなコードのいくつかの余分な行を追加するように単純なものが意味しています失敗する)? – WillardSolutions

+0

私は:配列の最初のエントリを見るには: 'reset $ converted;'次に、 'current($ converted);'は最初のエントリの値を取得し、 'key($ converted);'そのエントリの。これはすべてのPHP配列で機能します。 –

答えて

1

これは、あなたのコード付きの少し余分なマイルが便利になる場所です。

<?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; 
関連する問題