PHPで配列を文字列に変換する方法はいくつかありますが、代表的な手法として以下のようなものがあります。
implode() 関数で配列を連結して文字列にする
最もよく使われるのが implode() 関数です。これは配列の要素を連結して、区切り文字を挟んだ文字列に変換してくれます。
<?php
$array = ['apple', 'banana', 'cherry'];
$string = implode(', ', $array);
echo $string;
// 出力: apple, banana, cherry
- 第1引数: 区切り文字(カンマやスペースなど)
- 第2引数: 連結対象の配列
- 区切り文字に ‘,’ の他にも “\n”(改行)なども指定可能です。
- 配列の要素を単純に繋ぎ合わせたいときに手軽に使えます。
- 空文字 ” を指定すれば区切り文字なしで連結できます。
json_encode() 関数でJSON形式に変換
配列をJSON形式の文字列にしたいなら json_encode() が便利です。JavaScript をはじめとする他の言語とのデータ受け渡しでよく使われます。
<?php
$array = ['apple', 'banana', 'cherry'];
$jsonString = json_encode($array);
echo $jsonString;
// 出力: ["apple","banana","cherry"]
- 連想配列の場合、キーとバリューが {} 形式のオブジェクトとして表現されます。
- 他システムとデータをやり取りする際のフォーマットとして非常にポピュラー。
- JSON形式であればJavaScriptなどに渡してもそのまま扱いやすいのがメリットです。
serialize() 関数でPHP独自のシリアライズ形式に変換
PHP特有のシリアライズ形式で文字列化する場合は serialize() を使います。これを使うと、多次元配列やオブジェクトを含めて丸ごとシリアライズ(文字列化)できます。
<?php
$array = ['apple', 'banana', 'cherry'];
$serialized = serialize($array);
echo $serialized;
// 出力: a:3:{i:0;s:5:"apple";i:1;s:6:"banana";i:2;s:6:"cherry";}
- serialize() で文字列化したものは、unserialize() で元の配列(またはオブジェクト)に戻せます。
- PHP独自のフォーマットのため、他言語とのデータ連携には不向き。
- セッションやキャッシュの保存など、PHP内部で扱う一時的な保存目的に利用されます。
print_r() や var_export() を使ったデバッグ表示用の文字列化
print_r() の例
開発中のデバッグや配列の中身を「とりあえず」文字列にして表示したい場合は print_r() がお手軽です。第2引数に true を渡すと、文字列として返却されます。
<?php
$array = ['apple', 'banana', 'cherry'];
$string = print_r($array, true);
echo $string;
/*
出力:
Array
(
[0] => apple
[1] => banana
[2] => cherry
)
*/
var_export() の例
var_export() も同様に第2引数に true を指定すると文字列を返します。大きな違いは、出力された内容をPHPコードとして再利用できる点です。
<?php
$array = ['apple', 'banana', 'cherry'];
$string = var_export($array, true);
echo $string;
// 出力: array ( 0 => 'apple', 1 => 'banana', 2 => 'cherry', )
- あくまでもデバッグ・ログ用に向いているため、本番運用でのデータ受け渡しにはあまり向きません。
- 配列の階層構造を見やすい形で出力できるので、開発時に要素を確認するときに便利です。
まとめ
以上、PHPで配列を文字列に変換する4つの方法をご紹介しました。用途ごとに最適な手法を選ぶことで、効率よく開発を進められます。
プロダクト環境で使うときは、セキュリティ面や可読性、互換性をよく検討して、最適な方法を選択してください。特に外部システムとの連携には JSON形式(json_encode()) が主流です。一方、短い文字列で連結したいだけなら implode()、PHPのみでデータをやりとりするなら serialize() が一番シンプルでしょう。