5

ヒアドキュメント入力フィールド内に配列値を表示するのに問題があります。コードのスニペットを次に示します。

class Snippet{
  protected $_user;
  protected $_class;
  protected $_messages;

  public function __construct(){
    $this->_user = $this->_class = NULL;
    $this->createUser();
  }

  public function createUser(){
    $keys = array('user_login','user_email');
    $this->_user = $this->_class = array_fill_keys($keys, '');
  }

  public function userErrors(){
    //by default give the login field autofocus
    $_class['user_login'] = 'autofocus';
  }


  public function getForm(){

  return <<<HTML
<form id='test' action='' method='post'>
$this->_messages    
  <fieldset>
    <legend>Testing Heredoc</legend>
    <ol>
      <li>
        <label for='user_login'>Username</label>
        <input  id='user_login' name='user_login' type='text' placeholder='Login name' value=$this->_user[user_login] $this->_class[user_login]>
      </li>
    </ol>
  </fieldset>
</form>
HTML;
  }
}

私の出力は、値が として表示されるラベル付きの入力ボックスを生成しますArray[user_login]。配列を個別の変数に割り当てて、探している出力を取得できますが、これは不必要な無駄のようです。PHP5.3.5

4

1 に答える 1

12

{}このように中括弧内に配列変数をラップします

value="{$this->_user['user_login']} {$this->_class['user_login']}"

ここにこれに関する素晴らしい記事があります。

記事より

残念ながら、PHP は、関数を呼び出したり、式の結果を HEREDOC 文字列に出力したりするための直接的な手段を提供していません。ここでの問題は、中括弧内のものがドル記号で始まらない限り、PHP によって置換対象として認識されないことです。

于 2013-09-19T04:12:34.753 に答える