2016-05-21 15 views
0

特定のページセクションの名前の文字列パラメータを取ります。これはheadまたはbodyのいずれかです。foreachループの文字列を配列キーで連結する

関数は次のようになります。$viewから

private $html = []; 

public function doStuff($pageSection, array $views) 
{ 
    foreach ($views as $view) { 
     //Do some other stuff with view 

     $this->html[$pageSection] .= $view->renderOutput(); 
    } 

    print_r($this->html); 
} 

renderOutput()関数は、文字列を返し、すべてのエラーを投げていません。

特定の配列のキー($pageSection)で$this->html配列にこの文字列を追加しようとすると、私は次のエラーを取得する:

Notice: Undefined index: body in C:\file.php on line 35

次の行(print_r($this->html);で、配列が充填されているものの私は右の配列のキー、bodyに追加したいすべての文字列

このように呼ばれる関数の取得者:。

doStuff('body', array(
      //Array of views 
     )); 

私は連結演算子を削除しようとし、配列キー内の文字列を変更するだけで、これは同じエラーを投げた。

どうしてですか?私はすでに$this->html[$pageSection]の部分に配列キーを追加しています。

また、この問題を解決するにはどうすればよいですか?

+0

あなたのような何かを試すことができます。多分 'renderOutput'にありますか? –

+0

'print_r'を' pageSection'で試してみてください。 –

答えて

2

文字列

$this->html[$pageSection] .= 'some data'; 

あなたはべきがすでに存在してその値に'some data'を連結することを意味します。場合

あなたは$this->htmlの重要'body'を持っており、それに連結しようとしていません - あなたはこの予告が表示されます。私はここにbody` `に何も表示されません。

foreach ($views as $view) { 
    //Do some other stuff with view 

    // init value with empty string. 
    if (!isset($this->html[$pageSection])) { 
     $this->html[$pageSection] = ''; 
    } 

    $this->html[$pageSection] .= $view->renderOutput(); 
} 
+0

このチェックをforeachループの外に移動することをお勧めします。 '$ pageSection'は定数なので、各繰り返しでそれを確認する必要はありません。 – Pevara

+0

これは仕事をした!ありがとうございました。しかし、あなたがループに陥っていないときに '$ array ['randKey'] = 123;というようなことをするのはなぜですか?それはエラーなしで動作しますか? – Bas

+0

'$ array ['randKey'] = 123;は' create key randKeyとそれに123を割り当てる 'ことを意味します。参照してください - 連結はありません。 '$ array ['randKey']。= 123;'をチェックすると、警告が表示されます。 –

関連する問題