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.