【PHP】配列を文字列に変換する方法

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() が一番シンプルでしょう。