在heredoc函数中循环

时间:2017-07-20 11:34:35

标签: php wordpress

也许这已被问过许多次但似乎无法找到正确的合适。我是php新手并试图做一些疯狂/错误的事情。

这是wordpress。我有一个我重用的功能。我需要使用一个函数,因为我传递了params。在该函数内部,我循环到echo输出html,但不断获取“通知数组到字符串转换”。

function foo($bars) {
 // I have no idea the correct approach!
 foreach ($bars as $bar) {
  $big_bar = $bar;
 }

 echo <<<HTML
 <div>
   $big_bar;
 </div>
HTML;
}

目的是在html函数中循环$bars。请问怎么样?

3 个答案:

答案 0 :(得分:1)

还有更多方法可以做到这一点。如果您想回显$bars中的每个值:

function foo($bars) {
  foreach ($bars as $bar) {
    echo <<<HTML
<div>
$bar
</div>
HTML;
  }
}

对于这样一个简单的例子,你不需要一个nowdoc:

function foo($bars) {
  foreach ($bars as $bar) {
    echo "<div>".$bar."</div>";
  }
}

如果您向foo提供一系列字符串,则上述两种方法都可以使用。但是,如果提供数组数组,您将收到PHP的通知。确保传递正确的输入!

答案 1 :(得分:0)

我想你可能希望获得这样的输出,或者这对你有帮助。

    function foo($bars) 
    {
        $big_bar = '';

        foreach ($bars as $bar) {
            $big_bar .= $bar;
         }

         echo "<div>'".$big_bar."'</div>";
    }

$bars数组应该是这样的,

$bars = array("0"=>"first","1"=>"second");

否则您将收到错误

  

注意:数组到字符串转换

答案 2 :(得分:0)

可以在heredoc内部循环

<?php
$map=function($a,$f){return join("\n",array_map($f,$a));};
$data=[1,2,3];

$select = <<<HERE
<select>
 {$map($data,function($item){return"
  <option>$item</option>
 ";})}
</select>
HERE;

print $select;

甚至是这个

<?php
$map=function($a,$f){return join("\n",array_map($f,$a));};
$data=[1,2,3];

$select = "
<select>
 {$map($data,function($item){return"
  <option>$item</option>
 ";})}
</select>
";

print $select;