PHP, добавьте новую строку с implode

Я пытаюсь добавить новую строку n, в моем заявлении foreach с implode.

мой код:

$ga->requestReportData($profileId,array('country'),array('visits')); 
$array = array();
foreach($ga->getResults() as $result){ 
    $array[] = "['".$result->getcountry()."', ".$result->getVisits()."]"; 
} 
echo implode(",n", $array);

Я получаю только запятую и пробел между моими результатами. Я хочу запятую и новую строку.

Я пытаюсь сделать что-то вроде этого:

['Country', 'number'],

['Country', 'number'],

['Country', 'number']

однако я получаю это:

['Country', 'number'], ['Country',' number'], ['Country','number']

почему my n не вызывает новую строку?

4 ответов


Я подозреваю, что это потому, что вы повторяете данные в браузере, и он не показывает разрыв строки, как вы ожидаете. Если вы обернете свой implode в <pre> теги, вы можете видеть, что он работает правильно.

кроме того, ваши аргументы находятся в обратном порядке на вашем лопаются функция, согласно текущей документации. Однако, по историческим причинам, параметры могут быть в любом порядке.

$array = array('this','is','an','array');
echo "<pre>".implode(",\n",$array)."</pre>";

выход:

this,
is,
an,
array

для кросс-платформенной совместимости использовать PHP_EOL вместо \n.

используя пример из принятого ответа выше:

$array = array('this','is','another','way');
echo "<pre>".implode(PHP_EOL, $array)."</pre>";

если вы пишете непосредственно в HTML (он не будет работать с файлами), есть возможность использовать <br> такой:

$array = array('this','is','third','way');
echo "<p>".implode(<br>, $array)."</p>";

Это также может работать

$array = array('one','two','three','four');
echo implode("<br>", $array);

выход:

one
two
three
four

многие другие утверждают, что вы используете неправильный порядок, это только частичное право, потому что документы рекомендуют только это, но вам не нужно:

implode() может, по историческим причинам, принять свои параметры в любом порядок. Однако для согласованности с explode () это может быть меньше запутанно использовать документированный порядок аргументов.

Я думаю, что ваша проблема вызвана тем, как браузеры интерпретируют HTML. Им плевать на новые линии, они как ... нормальное для них пространство.

чтобы показать эти linebreaks, вы можете использовать <pre><?php echo implode($glue, $array); ?></pre>. Вы также можете использовать nl2br(implode(..)) или nl2br(implode(..), true) Если вы пишете XHTML.