PHP echo使得HTML结构不正确

时间:2014-03-03 22:46:58

标签: php

这是我的php代码

$arr = array(1,2,3,4);
function mypic($arr){
    foreach ($arr as $pic){
        echo "<img src='img/$pic.png'/>";       
    }
}


$i = 1;
while($i < 10){
    echo "<p>".mypic($arr)."</p>";
    $i++;
}

我得到的输出是

<img src="img/1.png">
<img src="img/2.png">
<img src="img/3.png">
<img src="img/4.png">
<p></p>
<img src="img/1.png">
<img src="img/2.png">
<img src="img/3.png">
<img src="img/4.png">
<p></p>

但是,我需要获得以下输出

<p>
<img src="img/1.png">
<img src="img/2.png">
<img src="img/3.png">
<img src="img/4.png">
</p>

我该如何解决?感谢

2 个答案:

答案 0 :(得分:2)

试试这个:

$arr = array(1,2,3,4);
function mypic($arr){
    foreach ($arr as $pic){
        echo "<img src='img/$pic.png'/>";       
    }
}

$i = 1;
while ($i < 10) {
   echo "<p>";
   mypic($arr);
   echo "</p>";
   $i++;
}

或者,您可以让mypic()函数返回字符串而不是打印它:

$arr = array(1,2,3,4);
function mypic($arr){
    $str = "";
    foreach ($arr as $pic){
        $str .= "<img src='img/$pic.png'/>";       
    }
    return $str;
}

$i = 1;
while ($i < 10) {
   echo "<p>";
   echo mypic($arr);
   echo "</p>";
   $i++;
}

答案 1 :(得分:1)

您也可以使用:

$arr = array(1,2,3,4);
function mypic($arr){
    $_str = '';
    foreach ($arr as $pic){
        $_str .= "<img src='img/$pic.png'/>";       
    }
    return $_str;
}

$i = 1;
while ($i < 10) {
   echo "<p>".mypic($arr)."</p>";
   $i++
}

或者:

$arr = array(1,2,3,4);
function mypic($arr){
    $_arr = array();
    foreach ($arr as $pic){
        $_arr[] = "<img src='img/$pic.png'/>";       
    }
    return implode(PHP_EOL, $_arr);
}

$i = 1;
while ($i < 10) {
   echo "<p>".mypic($arr)."</p>";
   $i++
}