2012-01-30 5 views
0

オブジェクトを配列にロードしようとしています。配列は、単一の配列または配列の配列(実行する入力の数を示す)のいずれかになります。私がこれまでに持っているコードは以下の通りです。単一のメソッドを呼び出し、単一のロードまたはループされたロードとして処理する必要があるかどうかを判断する簡単な方法はありますか?配列タイプによるプロセス入力

public function addInput($input) { 
    $this->inputs[] .= new Input($input); 
} 

public function addInputs($matrix_of_inputs) { 
    foreach($matrix_of_inputs as $input) { 
     $this->inputs[] .= new Input($input); 
    } 
} 

答えて

1
public function addInput($input) 
{ 
    $this->inputs[] = new Input($input); // note that I have removed the dot .= 
} 

public function addInputs($matrix) 
{ 
    if (!is_array($matrix)) { 
     $this->addInput($matrix); 
     return; 
    } 

    foreach($matrix as $input) { 
     if (is_array($input)) { 
      $this->addInputs($input); // if it can be multidimensional, might not be needed 
      continue; 
     } 
     $this->addInput($matrix); 
    } 
} 
+0

たぶん私は何かが欠けてる...(array_merge理由がある)は、(私の応答に示すように)、ここでは動作しませんか? –

+0

@ConradShultz OPは入力が 'Input'のインスタンスであることを望んでいます。彼は余分なドットでタイプミス(またはエラー)を起こしました。そして、多次元配列を扱うことができることを見せてくれるといいと思っていました;) – PeeHaa

0
public function addInputs($inputs) { 
    array_merge((array)$this->inputs, (array)$inputs); 
} 
関連する問題