最終更新日:
公開日:
レシピ
配列
配列を1つの文字列に変換する
配列の要素をimpload関数を使って1つの文字列に変換する方法について解説します。
この記事のポイント
- implode関数で配列の要素を任意の文字で区切った1つの文字列に変換する
- 連想配列についても要素のみ文字列に変換されるため、添字(キー)は文字列に含まれない
- implode関数は多次元配列には対応していない
目次
配列を1つの文字列にする
implode関数を使うと、配列の値を1つの文字列に変換することができます。
以下の例では配列$idsに入っている4つの値を1つの文字列に変換して、URLパラメータとして連結します。
PHP コード例
<?php
// 文字列に変化する配列
$ids = array(
12345,
22345,
33445,
55123
);
// 変換の実行
$api_url = 'https://api.gray-code.com/message/?ids=' . implode( ',', $ids);
var_dump($api_url);
// string(62) "https://api.gray-code.com/message/?ids=12345,22345,33445,55123"
上記のようにAPIのリクエストURLを作るときなどに、パラメータを全て配列に入れてimplode関数で文字列にまとめるときに活用することができます。
implode関数は第1パラメータに区切り文字、第2パラメータに配列を指定します。
配列に入っている全ての要素は、区切り文字を挟んだ1つの文字列に変換することができます。
区切り文字は「,」以外の任意の文字列を指定することができます。
連想配列を1つの文字列にする
連想配列でも要素を1つの文字列にすることができます。
ただし要素のみで文字列を作成するため、添字(キー)は文字列に含まれません。
コード例
<?php
// 文字列に変化する配列
$data = array(
'id' => 12345,
'name' => 'Taro',
'created_at' => '2010-01-01 00:10:05'
);
// 変換の実行
var_dump( implode( ',', $data));
// string(30) "12345,Taro,2010-01-01 00:10:05"
挙動は添字(キー)が数値の配列と全く同じです。
多次元配列を1つの文字列にする
多次元配列については、そのままimplode関数の第2パラメータに渡しても変換することはできません。
2次元以上の配列を文字列に変換したいときは、foreach文などのループ処理で子孫要素のみimplode関数で変換します。
以下の例では配列$dataに入っている2次元配列に対して、foreach文とimplode関数を組み合わせて1つの文字列を作成します。
親要素は「|」で区切り、子要素はimplode関数で指定した「,」で区切ります。
コード例
<?php
// 返還後の文字列を入れる変数
$res = null;
// 文字列に変化する配列
$data = array(
array(
'id' => 12345,
'name' => 'Taro',
'created_at' => '2010-01-01 00:10:05'
),
array(
'id' => 35245,
'name' => 'Kana',
'created_at' => '2010-01-02 00:35:12'
),
array(
'id' => 52992,
'name' => 'Shota',
'created_at' => '2010-01-03 09:05:22'
)
);
// foreach文で子要素を参照する
foreach( $data as $key => $value ) {
// 1つ目の子要素のみ
if( $key === 0 ) {
$res = implode(',', $value);
// 2つ目以降の子要素
} else {
$res .= '|' . implode(',', $value);
}
}
// 作成した文字列を出力
var_dump($res);
// string(97) "12345,Taro,2010-01-01 00:10:05|35245,Kana,2010-01-02 00:35:12|52992,Shota,2010-01-03 09:05:22"
こちらの記事は役に立ちましたか?
コメントありがとうございます!
運営の参考にさせていただきます。
ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。