2012-03-05 11 views
1

Iは以下の配列構造を有しており、Iが正常各ループに使用して[LoyaltyHistory]一部をループしています:各ループのは警告(2):foreachのために供給される無効な引数()

Array 
(
    [0] => Array 
     (
      [LoyaltyHistory] => Array 
       (
        [id] => 5 
        [user_id] => 32 
        [points] => 4 
        [date] => 2012-02-07 
        [total] => 146 
       ) 

      [User] => Array 
       (
       ) 

     ) 

    [1] => Array 
     (
      [LoyaltyHistory] => Array 
       (
        [id] => 6 
        [user_id] => 32 
        [points] => -6 
        [date] => 2012-02-07 
        [total] => 140 
       ) 

      [User] => Array 
       (
       ) 

     ) 

    [2] => Array 
     (
      [LoyaltyHistory] => Array 
       (
        [id] => 7 
        [user_id] => 32 
        [points] => -5 
        [date] => 2012-02-07 
        [total] => 135 
       ) 

      [User] => Array 
       (
       ) 

     ) 

    [3] => Array 
     (
      [LoyaltyHistory] => Array 
       (
        [id] => 8 
        [user_id] => 32 
        [points] => 15 
        [date] => 2012-02-07 
        [total] => 150 
       ) 

      [User] => Array 
       (
       ) 

     ) 

    [4] => Array 
     (
      [LoyaltyHistory] => Array 
       (
        [id] => 9 
        [user_id] => 32 
        [points] => 5 
        [date] => 2012-02-10 
        [total] => 155 
       ) 

      [User] => Array 
       (
       ) 

     ) 

    [5] => Array 
     (
      [LoyaltyHistory] => Array 
       (
        [id] => 10 
        [user_id] => 32 
        [points] => 155 
        [date] => 2012-03-04 
        [total] => 305 
       ) 

      [User] => Array 
       (
       ) 

     ) 

    [6] => Array 
     (
      [LoyaltyHistory] => Array 
       (
        [id] => 11 
        [user_id] => 32 
        [points] => -5 
        [date] => 2012-03-04 
        [total] => 300 
       ) 

      [User] => Array 
       (
       ) 

     ) 

    [7] => Array 
     (
      [LoyaltyHistory] => Array 
       (
        [id] => 12 
        [user_id] => 32 
        [points] => 5 
        [date] => 2012-03-05 
        [total] => 305 
       ) 

      [User] => Array 
       (
       ) 

     ) 

) 

あります

<?php foreach ($history as $hist) 
    { 
     if($hist['LoyaltyHistory']['points'] > 0) $hist['LoyaltyHistory']['points'] = '+'.$hist['LoyaltyHistory']['points'];?> 
           <tr> 
            <td><?php echo $hist['LoyaltyHistory']['date']; ?></td> 
            <td><?php echo $hist['LoyaltyHistory']['points']; ?></td> 
            <td><?php echo $hist['LoyaltyHistory']['total']; ?></td> 
           </tr> 
        <?php } ?> 

ザは各ループの配列から正しい要素をoutputingされるが、それは次の警告の原因となっている:'Warning (2): Invalid argument supplied for foreach()'を、私は理由を把握することができない次のように構成さ。

+0

'$ history'をループ変数として使用していますが、ループの中で' $ h'を呼び出すことができますか? –

+0

よく調べられ、その参照を$ hから$ histに更新するのを忘れた場合、元の投稿への修正が行われます。残念ながらそれは問題を引き起こしているものではありません。 –

+0

私はあなたのデータを使って例を試してみましたが、正しく動作します。どのサイクル後にこの警告を受け取るかを定義してください。 –

答えて

4

このエラーは、主にforeachで受信された引数が配列でない場合に発生します。 直前にvar_dump($history)を追加してみてください。あなたのレコードの1つは、空の配列の代わりにnull値を持たなければなりません。

+0

var_dumpは、最初の投稿のprint_rの出力と同じものを返します。あなたが見ることができるように、すべての 'LoyaltyHistory'要素には価値があります。 –

+0

しかし、あなたのforeachは 'LoyaltyHistory'配列をループするのではなく、あなたのメイン配列を通してループします。もっとコードを表示できますか? –

+0

私はあなたが何を意味するのか知っていますが、初期投稿のリストは配列構造全体を示しており、各配列要素はデータを持っています。私は他のコードが助けになるか分からない。関連する唯一の他のコードはコントローラ内にあります。 $ conditions = array( "user_id" => $ id);\t \t $ this-> LoyaltyHistory-> find( 'all'、array( 'conditions' => $ conditions))); これは、$ヒストリ配列に値を設定し、その値をVIEWに渡しています。 –

関連する問題