「PHP」implode関数の使い方について解説します。
PHPを学習中の方に向けて、当記事では「implode関数」の意味や使い方、「join関数」との違い、その他注意点などについてご紹介いたします。
implode関数とは
PHPにおける「implode関数」とは、配列内の要素を、区切り文字をつけて、文字列として結合する関数です。
文字だけではわかりにくいかと思われますので、以下をご覧ください。
$animal = array("ネコ", "イヌ", "ライオン", "キリン","キツネ");
という配列があったとすると、これらは「ネコ」、「イヌ」とバラバラの文字列として、配列に格納されています。
「implode関数」では、これらそれぞれの文字列を、ひとつの文字列として結合することができます。
以下でその書き方について解説していきます。
implode関数の記述
では具体的な記述方法について解説していきます。
「implode関数」は、ふたつの引数を渡し記述します.
$str = implode("配列の区切りに使用したい文字列を指定","適用したい配列名");
では、実際に記述してみましょう。
$animal = array("ネコ", "イヌ", "ライオン", "キリン","キツネ");
$str = implode("-",$animal);
echo $str;
出力結果
ネコ-イヌ-ライオン-キリン-キツネ
無事、指定した文字で区切った状態で、文字列として出力されました。
ちなみに第一引数(区切り文字の指定)の中身を空白にすると、「ネコイヌライオンキリンキツネ」のように連結されて出力されます。
また、第1引数を書かず配列名だけを引数に記述した場合も一応、区切り文字なしで出力されますが、これは推奨されていない記述の仕方ですので、区切り文字が必要ない時であっても、「""」のように第1引数を記述するようにしましょう。
2次元配列について
「implode関数」を2次元配列に使用することはできません。
「implode関数」の引数に2次元配列を指定した場合はエラーが出てしまいますので、必ず一次元配列を指定するようにしましょう。
配列内が文字列ではない場合
配列内が整数だった場合はどうなるのでしょうか?
以下で紹介します。
$number = array(111,222,333,444);
$result = implode("",$number);
echo $result;
出力結果
111222333444
このように整数の配列であったとしても、文字列として出力されます。
引数の順番について
通常、引数を渡す際は、第1引数、第2引数の順番は守らなければなりませんが、「implode関数」につきましては、「implode($animal,",")」のように、引数の順番を入れ替えても問題なく動作します。
しかし、一般的には第1引数は区切り文字、第2引数は配列名、というように使用されているので、余計な混乱を防ぐためにも慣例通り記述したほうが良いでしょう。
join関数との違いについて
PHPには、「implode関数」と同じく、配列内の要素を、区切り文字をつけて、文字列として結合する関数がありまして、それが「join関数」です。
記述の仕方についても「implode関数」と同じく、「join("○○",$○○)」のように、「引数に区切り文字と配列名」を指定するだけです。
同じ書き方で同じ働きをするならどういった違いがあるの?と思われるかもしれません。
結論から申し上げますと、「implode関数」と「join関数」は同じです。
PHPの公式では、「join — implode() のエイリアス」と解説されています。
「エイリアス」という言葉は聞きなれないかと思われますが、簡単に言うと「別名」や「あだ名」という意味です。
太郎くんのあだ名が「ゴンザレス」だとすると、太郎くんを呼びたい時に「ゴンザレス」と呼んでも通じますよね。
「implode」と「join」の関係はそれと同じです。
「implode」と「join」を使い分ける必要性についてですが、使い分ける必要は無いと言ってもよいでしょう。
「joinのほうがimplodeより処理が速い」とよく言われていますが、これに関しては眉唾ものでして、実際、処理スピードはお互い誤差の範囲でどちらが速いといったこともないようです。
強いて言うなら「join」のほうが文字数が少なく、キーボードの配置的にも入力しやすいのでタイプミスが少なくなるというメリットはあります。
どちらを使用するにしても、同プログラム内では統一するほうが良いでしょう。
最後に
以上がPHPの「implode関数」の使い方や注意点などについての解説となります。いかがだったでしょうか?
PHPに限らず、プログラミング学習は書くことが何よりも大切です。実際にエディターでコードを書いてみて、「implode関数」の動作を確認して理解を深めていきましょう。