2013-05-26 53 views
0

我的代码是2个部分,主要包含重要的PHP代码(身体),第二打印输出(如HTML)打印所有的foreach结果

我不能让一个在...输出必须在第二部分

第一部分打印为html

<?php 
    // The main code 
    $w = explode('-', 'x1-x2-x3-x4'); 
    foreach($w as $n) { 
     $s1 = $n; 
    } 
?> 

第二

<?php 
    // Print output here and must be here 
    echo $s1; 
?> 

正如你所看到的,我想了解foreach循环的输出,它应该是

x1 
x2 
x3 
x4 

但我只得到了x4。为什么?

+0

你说的*部分的意思是*?文件?代码块? – Shoe

+0

no does not work..syntax error – user2203703

+0

他的意思是'$ s1 = $ n'。 – casraf

回答

3

你的代码保持覆盖的$s1值,所以最后一个是实际得到的只有一个打印。

原来你不需要说的foreach都:

// first part 
$w = explode('-', 'x1-x2-x3-x4'); 
$s1 = implode('<br>', $w); 

// second part 
echo $s1; 

您可以使用取决于什么Content-type您发送的响应<br>\n

+1

这真是太棒了!我从来没有想过这样:) +1技术!这样他就不需要循环。 – itsols

0

你重写了foreach中的所有内容,所以你只能得到最后一个是x4的内容。

 foreach($w as $n) 
     { 
     $s1. = $n; 
     } 
     echo ($s1); 
+0

如何在下一行显示不添加任何
标记 – sAnS

1

如果你只想打印$ S1在第二部分中没有循环或做任何其他处理,你只需要先构建串$ S1。在你的情况下,当循环运行到最后一个项目时,只有它存储在$ s1中。所以输出是正确的。现在,为了输出整个事情为HTML,你可以做这样的事情在第一部分:

foreach($w as $n) 
     { 
     $s1 .= $n . "<br />"; 
     } 
1

的捷径=)

echo str_replace('-', '<br>', 'x1-x2-x3-x4'); 
0

你可以试试这样的:)

echo str_replace('-','<br />','x1-x2-x3-x4');