2013-08-24 5 views
0

Я хотел бы добавить пустую строку в конце последнего $member в нижнем коде, чтобы разграничить каждую группу. Я пробовал с кодом нижеДобавить пустую строку в конце массива в php

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 линии. Как добавить пространство только в конце последней строки?

ответ

1

Я не уверен, я понимаю, что вы просите. Если вы хотите добавить новую строку после последнего элемента, вы можете сделать это после цикла:

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

Если вам это нужно внутри цикла, вам нужно будет проверить последний ключ. Один из способов сделать это путем манипулирования array's internal pointer:

# 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"; 
    } 
    # ... 
} 
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); 
} 

} 

** Вы подсчитали значение ключа ($ члена), но на самом деле это будет подсчет исходного массива ($ участников). Здесь $ key начинается с нуля и заканчивается предыдущим числом общего количества массивов.

Я не знаю вашу структуру массива из $ членов. Вы можете использовать пыльник код

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

Объясните разницу между вашим кодом и кодом ops –

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> 

$ 
Смежные вопросы