0

我想$member在下面代码的最后一个末尾添加一个空行以区分每个组。我试过下面的代码

foreach($members as $key => $member)
{
    $member = trim(preg_replace('/\s\s+/', ' ', $member));
    $dev = " $member part of Form; <br>";
    echo str_replace("<br>", "\r\n", $dev);

    if($key == count($member)-0) 
    {
        $space = "<br>";
        echo str_replace("<br>", "\r\n", $space);
    }
}

但是它在每 2 行之后添加一个空格。如何仅在最后一个字符串的末尾添加空格?

4

4 回答 4

2
foreach($members as $key => $member)
{

$member = trim(preg_replace('/\s\s+/', ' ', $member));
$dev = " $member part of Form; <br>";
echo str_replace("<br>", "\r\n", $dev);
if($key == count($members)-1) <!--- ** check this line ---->
{
$space = "<br>";
echo str_replace("<br>", "\r\n", $space);
}

}

** 您已经计算了键 ($member) 的值,但实际上它将是原始数组 ($members) 的计数。这里 $key 从零开始,它将结束先前的总数组计数。

我不知道你的 $members 数组结构。您可以使用以下代码

$count = count($members);
$i  = 1;
foreach($members as $key => $member)
{

$member = trim(preg_replace('/\s\s+/', ' ', $member));
$dev = " $member part of Form; <br>";
echo str_replace("<br>", "\r\n", $dev);
if($i == $count) 
{
$space = "<br>";
echo str_replace("<br>", "\r\n", $space);
}
$i ++;
}
于 2013-08-24T10:30:20.550 回答
1

要在“最后一个字符串的末尾”添加换行符,只需在循环后回显即可。但是使用常量 PHP_EOL 而不是“\r\n”。

将 PHP_EOL 连接到每一行的末尾将为您提供在浏览器和命令行中显示或多或少相同的输出。在循环之后再回显一个 PHP_EOL 将插入一个空行,该空行在命令行中可见,但在浏览器中不可见。如果您在浏览器中需要一个空行(更多空格),请改用 CSS。

由于您似乎已经知道如何替换<br>标签,因此我忽略了您代码的那部分。如果您确实需要替换这些标签,而不仅仅是让您的文本在命令行中更具可读性,您可以轻松做到这一点。

$ cat code/php/test.php
<?php
$members = array(0 => 'Member0', 1 => 'Member1', 2 => 'Member2', 3 => 'Member3');
foreach($members as $key => $member)
{
    $member = trim(preg_replace('/\s\s+/', ' ', $member));
    echo " $member part of Form; <br>".PHP_EOL;
}
echo PHP_EOL;
?>
$ php code/php/test.php
 Member0 part of Form; <br>
 Member1 part of Form; <br>
 Member2 part of Form; <br>
 Member3 part of Form; <br>

$
于 2013-08-24T11:22:26.493 回答
1

我不确定我明白你在问什么。如果要在最后一项之后添加换行符,可以在循环之后执行此操作:

foreach ($members as $key => $member) {
    # ...
}
echo "\r\n";

如果您在循环中需要它,则需要测试最后一个键。一种方法是操作数组的内部指针

# Set internal pointer of array to the last entry:
end($members)
# Get the key of that last entry:
$lastKey = key($members)
foreach ($members as $key => $member) {
    # ...
    if ($key === $lastKey) {
        echo "\r\n";
    }
    # ...
}
于 2013-08-24T10:29:43.137 回答
0
$numItems = count($members);
$i = 0;
foreach($members as $key=>$member) {
  if(++$i === $numItems) {
    $space = "<br">;
    echo str_replace("<br>", "\r\n", $space);
  }
}

在 PHP 中使用 foreach 循环时查找数组的最后一个元素

于 2013-08-24T10:22:06.663 回答