也许这已被问过许多次但似乎无法找到正确的合适。我是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
。请问怎么样?
答案 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;