0

我的代码是 2 部分,主要包含重要的 php 代码(主体)和第二部分打印输出(如 html)

我做不到……输出必须在第二部分打印为 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. 为什么?

4

5 回答 5

3

您的代码不断覆盖 的值$s1,因此最后一个是唯一实际打印的。

事实证明你根本不需要那个 foreach:

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

// second part
echo $s1;

您可以使用<br>\n取决于Content-type您在响应中发送的内容。

于 2013-05-26T14:25:44.413 回答
1

如果您只想在第二部分中打印 $s1 而无需循环或进行任何其他处理,您只需首先构建字符串 $s1。在您的情况下,当循环运行到最后一项时,只有那项存储在 $s1 中。所以输出是正确的。现在,为了将整个内容输出为 html,您可以在第一部分执行以下操作:

  foreach($w as $n)
      {
        $s1 .= $n . "<br />";
      }
于 2013-05-26T14:24:46.103 回答
1

最短的方法 =)

echo str_replace('-', '<br>', 'x1-x2-x3-x4');
于 2013-05-26T14:46:25.723 回答
0

你可以试试这样:)

echo str_replace('-','<br />','x1-x2-x3-x4');
于 2013-05-26T15:24:20.310 回答
0

你正在覆盖 foreach 中的所有内容,所以你只得到最后一个是 x4 的内容。

      foreach($w as $n)
      {
        $s1. = $n;
      }
      echo ($s1);
于 2013-05-26T14:23:26.280 回答