2017-10-23 7 views
1

私は各行の新しい配列を作成するためにforeachループの行の列をループしています。foreach PHPのループスルーカラム

$e = 1; 
$columns = array('colname1', 'colname2', 'colname3', 'colname4','colname5'); 
foreach ($variable as $row) { 
    for ($i=1; $i < 5;) 
    { 
     $new_array[$i] = (
     array(
      'id' => NULL, 
      'order_line_id' => $order_line_id, 
      'size' => $e, 
      'qty' => $row->$columns[$i] //error is here 
     ) 
    ); 
     $i++; 
     $blank_detail[$i] = (
     array(
      'id' => NULL, 
      'order_line_id' => $order_line_id, 
      'size' => $e."-", 
      'qty' => $row->$columns[$i] //error is here 
     ) 
    ); 
     $e++; 
    }; 
} 

これを行うには、より効率的な方法がありますか、それとも構文エラーですか?

+0

)またはますprint_rを実行できることをかなり確信しています)それの? – TimBrownlaw

答えて

2

あなたはvariable variableとして配列を使用しているので、あなたは、この行を変更する必要があります。また、PHP7間の間接的な変数を扱うの変化が多い

'qty' => $row->$columns[$i] 

'qty' => $row->{$columns[$i]} 

にしますおよびPHP5, check it out。変数、プロパティ、メソッド

間接アクセスは今 は特殊な例以前 ミックスとは対照的に、左から右への順、厳密に評価されます。以下の表は、 評価の順序がどのように変更されたかを示しています。

あなたはPHP5でこの構文'qty' => $row->$columns[$i]を使用している場合、これはPHP7にインタプリタがあなたのコードを解釈し、$iインデックスを取得する一方、あなたがPHPは、あなたのコードを解釈し、$column配列から$iインデックスを取得することを意味します$row->$columns配列からエラーがスローされます。
1 - $columnsは配列であり、あなたはそのように不正なインデックスタイプにアクセスしようとしています。
が有効なインデックスタイプ(文字列)であっても、このインデックスには$i番目の要素はありません。


も私は(あなたがarray_combineを利用する代わりに、ネストされた2つの$変数が設定を取得ん、あなたは(のvar_dumpからの出力を表示することができ、ループ