Php 函数bug中的echo函数

Php 函数bug中的echo函数,php,html,function,Php,Html,Function,我有以下PHP代码: function button1($attr, $text) { $data = "<button "; foreach($attr as $names => $specs) { $data .= $names . "='" . $specs . "' "; } $data .= ">" . $text . "</button>\n"; echo $data; } function span1($attr, $

我有以下PHP代码:

function button1($attr, $text) {
  $data = "<button ";

  foreach($attr as $names => $specs) {
    $data .= $names . "='" . $specs . "' ";
  }

  $data .= ">" . $text . "</button>\n";
  echo $data;
}

function span1($attr, $text) {
  $data = "<span ";

  foreach($attr as $names => $specs) {
    $data .= $names . "='" . $specs . "' ";
  }

  $data .= ">" . $text . "</span>\n";
  echo $data;
}

button1(
  array( "type" => "button",
         "class" => "navbar-toggle",
         "data-toggle" => "collapse",
         "data-target" => ".navbar-collapse"
  ),
  span1(
    array( "class" => "sr-only" ),
    "Toggle navigation"
  )
);
功能按钮1($attr,$text){
$data=“”.$text。“\n”;
    foreach($attr as $names => $specs) 
    {
         $data .= $names . "='" . $specs . "' ";
    }

    $data .= ">" . $text . "</button>\n";
    return $data;
}

function span1($attr, $text) 
{
     $data = "<span ";

     foreach($attr as $names => $specs) 
     {
          $data .= $names . "='" . $specs . "' ";
     }

     $data .= ">" . $text . "</span>\n";
     return $data;
}

$str = span1(
         array( "class" => "sr-only" ),
                "Toggle navigation"
        );
回波数据; } 函数span1($attr,$text){ $data=“”.$text。“\n”;
    foreach($attr as $names => $specs) 
    {
         $data .= $names . "='" . $specs . "' ";
    }

    $data .= ">" . $text . "</button>\n";
    return $data;
}

function span1($attr, $text) 
{
     $data = "<span ";

     foreach($attr as $names => $specs) 
     {
          $data .= $names . "='" . $specs . "' ";
     }

     $data .= ">" . $text . "</span>\n";
     return $data;
}

$str = span1(
         array( "class" => "sr-only" ),
                "Toggle navigation"
        );
回波数据; } 按钮1( 数组(“键入”=>“按钮”, “类”=>“导航栏切换”, “数据切换”=>“折叠”, “数据目标“=>”。导航栏折叠” ), span1( 数组(“类”=>“仅限sr”), “切换导航” ) );
根据上面的代码,我希望结果如下所示:

<button type='button' class='navbar-toggle' data-toggle='collapse' data-target='.navbar-collapse' >
  <span class='sr-only' >Toggle navigation</span>
</button>
<span class='sr-only' >Toggle navigation</span>
<button type='button' class='navbar-toggle' data-toggle='collapse' data-target='.navbar-collapse' ></button>

切换导航
但事实上,它看起来是这样的:

<button type='button' class='navbar-toggle' data-toggle='collapse' data-target='.navbar-collapse' >
  <span class='sr-only' >Toggle navigation</span>
</button>
<span class='sr-only' >Toggle navigation</span>
<button type='button' class='navbar-toggle' data-toggle='collapse' data-target='.navbar-collapse' ></button>
切换导航

我必须做什么才能得到我想要的结果?感谢您的帮助。

简单,永不
echo
来自函数。问题是,
span1()
首先被求值,这导致其
echo
执行。它也不返回任何用作
button1()
$text
参数的内容。然后执行
button1()
echo
,在
span1()
echo之后将其内容打印到输出流

将每个函数的最后一行更改为

return $data;
并通过

echo button1(...);

用以下代码替换PHP代码:, 您必须
将$data
返回到函数中,还必须回显按钮1()


你好,请使用下面的代码获得所需的输出
功能按钮1($attr,$text)
{
$data=”
    foreach($attr as $names => $specs) 
    {
         $data .= $names . "='" . $specs . "' ";
    }

    $data .= ">" . $text . "</button>\n";
    return $data;
}

function span1($attr, $text) 
{
     $data = "<span ";

     foreach($attr as $names => $specs) 
     {
          $data .= $names . "='" . $specs . "' ";
     }

     $data .= ">" . $text . "</span>\n";
     return $data;
}

$str = span1(
         array( "class" => "sr-only" ),
                "Toggle navigation"
        );
foreach($attr as$names=>$specs)
{
$data.=$names.“='”$specs.“'”;
}
$data.=“>”$text.\n;
返回$data;
}
函数span1($attr,$text)
{
$data=“”.$text。“\n”;
    foreach($attr as $names => $specs) 
    {
         $data .= $names . "='" . $specs . "' ";
    }

    $data .= ">" . $text . "</button>\n";
    return $data;
}

function span1($attr, $text) 
{
     $data = "<span ";

     foreach($attr as $names => $specs) 
     {
          $data .= $names . "='" . $specs . "' ";
     }

     $data .= ">" . $text . "</span>\n";
     return $data;
}

$str = span1(
         array( "class" => "sr-only" ),
                "Toggle navigation"
        );
返回$data; } $str=span1( 数组(“类”=>“仅限sr”), “切换导航” );
回声按钮1( 数组(“键入”=>“按钮”, “类”=>“导航栏切换”, “数据切换”=>“折叠”, “数据目标“=>”。导航栏折叠” ), $str
)

看看这个:@rohit太好了,谢谢你的回答,它对我很有效,但是如果我必须在我的视图中一个接一个地包含ECHO,我会觉得很烦人,因为我在我的函数中使用ECHO。有什么建议吗?你应该根据你的代码研究函数的执行情况:第一次调用这个span1函数中的button1函数就会执行。如果ECHO有什么span1函数,然后它将首先回显。然后执行button1。如果回显任何button1函数,那么它将回显。因此,您从代码中得到的输出是这样的。太好了,谢谢您的回答,它对我有效,现在我知道函数规则永远不会从中回显,但如果我必须在我的视图一个接一个,正因为如此,我在函数中使用了echo,有什么建议吗?@MuhammadZaidTaufiq在MVC模式中,视图是生成输出的地方,因此
echo
应该在那里。