2017-04-22 10 views
0

いくつかの変数で同じアクションを実行したいと思います。そこで変数の変数を作成しました。しかし、私が$$を使ってループしているときに、 "foreach()の引数が無効です"というエラーが表示されています。私は変数のタイプをチェックしています。それは配列です。次にエラーは何ですか?PHPでエラーのエラーを使用中にエラーが発生しました

$edu_data = Json::decode($model->education); 
    $exp_data = Json::decode($model->experience); 
    $avail_data = Json::decode($model->availability); 
    $docs_data = Json::decode($model->documents); 

    $model_edu = new \admin\models\ApplicantEducation(); 
    $model_exp = new \admin\models\ApplicantExperience(); 
    $model_avail = new \admin\models\Availability(); 
    $model_cre = new \admin\models\Credential(); 

    $all = array('edu_data' => 'model_edu', 'exp_data' => 'model_exp', 'avail_data' => 'model_avail', 'docs_data' => 'model_cre'); 
    foreach ($all as $a => $s) 
    { 
     $arr = $$a; 
     foreach ($arr as $v) 
     { 
      $$s->applicant_id = $applicant_id; 
      foreach ($arr[1] as $k1 => $v1) 
      { 
       $$s->$k1 = $v[$k1]; 
      } 
      $$s->save(); 
     } 
    } 

答えて

3

あなたの配列は、あなたの変数(例えば$model_edu)が含まれていますが、文字列値(0​​)としてのみ、それぞれの名前はありません。 編集:私の悪い、私はこれが意図的であることに気付かなかった。

私は、関数を使用することをお勧め:

function process_data($model, $data, $applicant_id) { 
    foreach ($data as $v) { 
     $model->applicant_id = $applicant_id; 
     foreach ($data[1] as $k1 => $v1) 
     { 
      $model->$k1 = $v[$k1]; 
     } 
     $model->save(); 
    } 
} 

process_data($model_edu, $edu_data); 
process_data($model_exp, $exp_data); 
process_data($model_avail, $avail_data); 
process_data($model_docs, $docs_data); 

あなたのコードはより簡単にcomprehendableになります。

foreach ($all as $a => $s) 
{ 
    $arr = $$a; 

    var_dump($arr); 

    foreach ($arr as $v) 
    { 
     $$s->applicant_id = $applicant_id; 

     var_dump($arr[1]); 

     foreach ($arr[1] as $k1 => $v1) 
     { 
      $$s->$k1 = $v[$k1]; 
     } 
     $$s->save(); 
    } 
} 

が、これは期待値であるかどうかを確認し、上そこから進む:

それとは別に、あなたは正確にいつどこでエラーが発生見つけるために、このようなあなたのコードをデバッグすることができます。
理由が変数のいずれかで予期しない値であるのか、それともコードロジックでエラーであるのかを調べます。

+0

と同じエラーが発生します。私はあなたが私の質問を理解できなかったと思う。私はPHPの可変機能の変数を使用して$ edu_dataをループしたい – Ish

+0

はい、私はすべての期待値を取得し、型も配列です。しかし、私はそのエラーを取得します。私はすでにこの方法でデバッグに疲れていました。 – Ish

+0

私はあなたが私に機能を発揮して前進するように言った方法を知っています。しかし私は私のアプローチの欠陥を理解したい。 – Ish

関連する問題