読者です 読者をやめる 読者になる 読者になる

配列/リストの中身を一度にすべて表示する PHP, Python

PHP Python

PHPを用いて次のようなコードで配列をループ処理せずに一度に全て表示する方法を調べてみました。

<?php
$chars = preg_split('//u', '配列の中身', -1, PREG_SPLIT_NO_EMPTY);
foreach ($chars as $char) {
    echo $char, '<br>', PHP_EOL;
}

/*
配<br>
列<br>
の<br>
中<br>
身<br>

*/

PHP: implode()を用いると意図している感じに表示できます。

<?php
$eol = '<br>' . PHP_EOL;
$chars = preg_split('//u', '配列の中身', -1, PREG_SPLIT_NO_EMPTY);
echo implode($eol, $chars), $eol;

/*
配<br>
列<br>
の<br>
中<br>
身<br>

*/

PHP: vprintf()を用いても意図している感じに表示できるようです。

<?php
$eol = '<br>' . PHP_EOL;
$chars = preg_split('//u', '配列の中身', -1, PREG_SPLIT_NO_EMPTY);
vprintf(str_repeat('%s' . $eol, count($chars)), $chars);

/*
配<br>
列<br>
の<br>
中<br>
身<br>

*/
  • vprintf()の第1引数に用いるフォーマット%s<br>PHP_EOLを配列$charsと同じ数count($chars)だけstr_repeat()で用意しています。
<?php
$chars = preg_split('//u', '配列の中身', -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);

/*
Array
(
    [0] => 配
    [1] => 列
    [2] => の
    [3] => 中
    [4] => 身
)
*/

Python: *でリストをアンパックしてprintに渡すと意図しているように表示できます。

# -*- coding: utf-8 -*-
from __future__ import print_function
eol = '<br>\n'
chars = list(u'配列の中身')
print(*chars, sep=eol, end=eol)

'''
配<br>
列<br>
の<br>
中<br>
身<br>

'''
  • sepで区切り文字を<br>\nに変えています。
    より前に表示されている<br>\nです。
  • endで文末の文字を<br>\nに変えています。
    の後に表示されている<br>\nです。

*を付け忘れるとリストのまま表示されてしまいます。

*charsのように*を付ける事でリストがアンパックされるのでcharsのまま渡してしまうと意図しているようにはならないので注意が必要です。

[u'\u914d', u'\u5217', u'\u306e', u'\u4e2d', u'\u8eab']<br>
['配', '列', 'の', '中', '身']<br>