2014-03-03 37 views
0

这是我的PHP代码PHP回声让HTML结构不正确

$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> 

我如何解决它?由于

+6

你需要'mypic()'* return *一个字符串,而不是* echo *它。 –

回答

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++; 
} 
+0

非常感谢,请打勾:-) – olo

+1

不要忘记标记为答案。 :) –

+0

绝对!等待时间让我打勾! ;) – olo

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++ 
}