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の問い合わせフォームに任意の値を引数として渡す方法
ECCUBEのお問い合わせフォームに値を固有の情報を送りそれに基づいて処理をする方法を解説。ボタンの設置、受け取り側のテンプレート、プログラムのサンプルソースを提供。
-
-
Smartyの修飾子regex_replaceで正規表現の後方参照・PHPではpreg_replace
ECCUBEで使われているSmartyで文字列を正規表現で置換し後方参照で値を利用する装飾子regex_replaceの解説です。細かな条件がありますので注意が必要です。
-
-
ECCUBEの新規追加ページがInternal Server Error・Not Foundに
ECCUBEで新規追加したページがInternal Server Errorに!原因はファイルのパーミッションの場合が多くその対処方法とプログラムの修正ポイントを解説。Not Foundも解説。
-
-
CentOS6、7のPHPを5.3から5.6、7.0、7.1にバージョンアップする手順の解説
CentOS6系、7系のPHPバージョンを5.3から5.6、7.0、7.1にアップする作業手順と解説。yum updateコマンドを使い作業時間は約10分。コマンドの解説や引数の意味なども解説しているので役に立つはず。
-
-
ECCUBE2.13.3で商品規格の在庫数が無制限から変更できないバグがある
2.13.3固有のバグである商品規格の在庫数の入力エリアがアクティブにならない不具合を解消する解説です。product_class.tplの2行を修正するだけの簡単対応です。
-
-
include、requireのパス指定をdirname(__FILE__)、__DIR__と書く理由
include、requireのパスの指定を dirname(__FILE__)、__DIR__で記述する理由に付いて解説。相対パス、絶対パスを直書き、パスを書かない場合は何が問題かを説明。
-
-
SEO対策用タイトル、ディスクリプションの文字数カウントツール
SEO対策に使える文字数カウントツールで文字数の条件の説明も行っています。
-
-
WindowsのXAMPPのPHPではstrptimeは使用不可。代替はdate_parse_from_formatを使う
strptimeはWindowsのPHPには未実装。LinuxとMacで挙動が異なる。PHP8.1で非推奨になる。なので日付のチェックはdate_parse_from_formatを使おう。使い方を詳細解説。
-
-
ECCUBEの注文完了画面注文番号と商品情報を編集するCRITEO(クリテオ)タグを編集
ECCUBEの注文完了画面にクリテオのタグを編集する方法を紹介。標準機能では完了画面に注文IDや購入商品の情報を渡さないため改修が必要です。
-
-
PHP画面が真っ白 header(“Location: $url”);
PHPの開発で header(“Location: $url”);を使うと画面が真っ白になる不具合が出る場合もあります。