PHPで配列の値をダブルクオーテーションで囲んでimplodeでカンマ区切りにする方法
PHPで配列をクォーテーションで囲ってカンマ区切りのテキストにする方法の解説
PHPで配列をクォーテーションで囲ってカンマ区切りのテキストにする方法の解説・「preg_replace()」「implode()」を使う
PHPで、配列の値をダブルクォーテーション(シングルクォーテーション)で囲んで、implode()関数でカンマ区切りにしてテキスト化する方法を解説します。
|
1 2 3 4 5 6 |
$array = [ 'あああ', 'いいい', 'ううう' ]; $text = implode ( ",", preg_replace ( '/^(.*?)$/', '"$1"', $array ) ); echo $text; // 実行結果は下記のようになります。 // "あああ","いいい","ううう" |
まず最初に、「preg_replace()」関数を使って、配列の値を「”(ダブルクォーテーション)」で囲みます。
シングルクォーテーションがいい場合は、「'"$1"'」の部分のダブルクォーテーションとシングルクォーテーションを入れ替えて「"'$1'"」とすれば OKです。
続いて、「implode()」関数を使って「,(カンマ)」で区切ってテキスト化する、という処理です。
最初の「preg_replace()」関数を使う処理が分かれば、難しい処理ではないでしょう。
配列の中にダブルクォーテーションが含まれる場合はエスケープ処理
前項の処理において、配列の中の値にダブルクオーテーションが含まれる場合は、テキスト化した際のクォーテーションの囲みが正しく認識されない場合が考えられます。
配列の中にダブルクォーテーションが含まれる可能性がある場合は、下記の様にエスケープする処理を追加します。
|
1 2 3 |
$array = [ 'あ"ああ', 'いいい', 'ううう']; $array = str_replace('"', '\"', $array); $text = implode(",", preg_replace('/^(.*?)$/', '"$1"', $array)); |
配列をダブルクォーテーションで囲んでカンマで区切る他の方法
今回の解説の「配列をクォーテーションで囲って、「implode()」関数でカンマ区切りのテキストにする」という方法をググると、下記のような方法が出てきました。
|
1 2 |
$array = [ 'あああ', 'いいい', 'ううう']; $text = '"' . implode('","', $array) . '"'; |
「implode()」関数で、配列の間に「”,”」を入れてテキスト化し、不足している一番前と一番うしろに「”」を追加する、という処理です。
この方法でもできます。
ただ、あまり美しくないなぁ、と思うことと、配列が空だった場合は「””」のクォーテーションの囲みだけが残ることとなります。
配列が空だった場合にクォーテーションの囲みだけが残ることが問題につながる場合は、if文による分岐処理なども必要になります。
ですが、最初に紹介した方法であれば、配列がからの場合は「””」のクォーテーションの囲みも出力されません。
まぁ、そもそも「$array」の存在チェックから必要であれば、処理の長さはあまり変わらなくなりますが。
この記事で紹介した処理を必要とした経緯
今回この記事で紹介した処理を必要としたい経緯は、データベースに保存してある値を PHPで処理をして、JavaScriptの配列に入れたい、というのが出発点でした。
|
1 2 3 4 5 6 7 |
<script> $(function(){ var textList = ["01","03","07"]; textList.forEach(function(value){ $("#sample" + value).hide(); }); </script> |
上記の 3行目の配列の箇所に「”01″,”03″,”07″」を編集したい!というのが目的でした。
ググっても出てくる処理があんまり美しくないなぁ、と思った次第です。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
ECCUBEの商品一覧ページのSEO対策!rel=”next” rel=”prev”を設定
Googleは関連あるページはその旨明示するよう求めています。ECCUBEの商品一覧ページでその求めに応じるための「rel=”next”」「rel=”prev”」について解説します。
-
-
配列の値をテキスト表示する際に「、」でつなげるときの処理方法の一例
配列の値を「、」でつないで出力する際、単純にforeachで繰り返し処理をすると「イヌ、サル、キジ、」となるが文字列最後の「、」を出力しない方法を3つ解説している。
-
-
PHPで特定の日間の日付を for、strtotimeで表示する
ある特定の間の日付の情報を for文、strtotimeを使って作成し、その解説をしています。
-
-
Smartyの修飾子regex_replaceで正規表現の後方参照・PHPではpreg_replace
ECCUBEで使われているSmartyで文字列を正規表現で置換し後方参照で値を利用する装飾子regex_replaceの解説です。細かな条件がありますので注意が必要です。
-
-
PHPのソースで見慣れない記号が出てきた・アロー演算子(->)、ダブルアロー演算子(=>)
PHPのプログラムソースには見慣れない記号が出てきます。その意味や調べ方です。
-
-
ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある
2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。
-
-
Smartyのテンプレート内の処理で計算、加工をする方法
Smartyのテンプレート上で変数を計算する、加工する方法を解説します。
-
-
PHPで正規表現の検証には preg_match_allが便利
PHPで正規表現の検証には preg_match_allが便利です。その便利さの使い方の解説です。
-
-
ECCUBEの注文完了画面注文番号と商品情報を編集するCRITEO(クリテオ)タグを編集
ECCUBEの注文完了画面にクリテオのタグを編集する方法を紹介。標準機能では完了画面に注文IDや購入商品の情報を渡さないため改修が必要です。
-
-
PHPで月末から1ヶ月後「+1 month」を算出すると想定する日付にならない場合がある
PHPでは月末の1ヶ月後が想定した日付にならない場合がある。原因はバグではなくPHPの1ヶ月後の定義によるもの。なので必要とする日付を定義しそれに合わせてDateTime、modifyを使用して算出方法を解説している。