PHPで配列の値をダブルクオーテーションで囲んでimplodeでカンマ区切りにする方法
PHPで配列をクォーテーションで囲ってカンマ区切りのテキストにする方法の解説
PHPで配列をクォーテーションで囲ってカンマ区切りのテキストにする方法の解説・「preg_replace()」「implode()」を使う
PHPで、配列の値をダブルクォーテーション(シングルクォーテーション)で囲んで、implode()関数でカンマ区切りにしてテキスト化する方法を解説します。
$array = [ 'あああ', 'いいい', 'ううう' ]; $text = implode ( ",", preg_replace ( '/^(.*?)$/', '"$1"', $array ) ); echo $text; // 実行結果は下記のようになります。 // "あああ","いいい","ううう"
まず最初に、「preg_replace()」関数を使って、配列の値を「”(ダブルクォーテーション)」で囲みます。
シングルクォーテーションがいい場合は、「'"$1"'」の部分のダブルクォーテーションとシングルクォーテーションを入れ替えて「"'$1'"」とすれば OKです。
続いて、「implode()」関数を使って「,(カンマ)」で区切ってテキスト化する、という処理です。
最初の「preg_replace()」関数を使う処理が分かれば、難しい処理ではないでしょう。
配列の中にダブルクォーテーションが含まれる場合はエスケープ処理
前項の処理において、配列の中の値にダブルクオーテーションが含まれる場合は、テキスト化した際のクォーテーションの囲みが正しく認識されない場合が考えられます。
配列の中にダブルクォーテーションが含まれる可能性がある場合は、下記の様にエスケープする処理を追加します。
$array = [ 'あ"ああ', 'いいい', 'ううう'];
$array = str_replace('"', '\"', $array);
$text = implode(",", preg_replace('/^(.*?)$/', '"$1"', $array));
配列をダブルクォーテーションで囲んでカンマで区切る他の方法
今回の解説の「配列をクォーテーションで囲って、「implode()」関数でカンマ区切りのテキストにする」という方法をググると、下記のような方法が出てきました。
$array = [ 'あああ', 'いいい', 'ううう'];
$text = '"' . implode('","', $array) . '"';
「implode()」関数で、配列の間に「”,”」を入れてテキスト化し、不足している一番前と一番うしろに「”」を追加する、という処理です。
この方法でもできます。
ただ、あまり美しくないなぁ、と思うことと、配列が空だった場合は「””」のクォーテーションの囲みだけが残ることとなります。
配列が空だった場合にクォーテーションの囲みだけが残ることが問題につながる場合は、if文による分岐処理なども必要になります。
ですが、最初に紹介した方法であれば、配列がからの場合は「””」のクォーテーションの囲みも出力されません。
まぁ、そもそも「$array」の存在チェックから必要であれば、処理の長さはあまり変わらなくなりますが。
この記事で紹介した処理を必要とした経緯
今回この記事で紹介した処理を必要としたい経緯は、データベースに保存してある値を PHPで処理をして、JavaScriptの配列に入れたい、というのが出発点でした。
<script>
$(function(){
var textList = ["01","03","07"];
textList.forEach(function(value){
$("#sample" + value).hide();
});
</script>
上記の 3行目の配列の箇所に「”01″,”03″,”07″」を編集したい!というのが目的でした。
ググっても出てくる処理があんまり美しくないなぁ、と思った次第です。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
ECCUBEを開発環境から本番ドメインに変更でエラーが・パス変更について
レンタルサーバでサーバ会社から割り当てられたURLで開発し、本番公開時にドメインを当てたらエラーが!そんな場合の対処方法の解説。対処方法は簡単ですが管理画面からは対応不可。
-
-
AdminerはphpMyAdmin代替のデータベース管理ツール
AdminerはphpMyAdminとほぼ同機能のデータベース管理ツール。PHP 1ファイルのため設置が非常に簡単で軽快に動作し、phpMyAdminの置き換えで使うのも問題なし。
-
-
配列の値をテキスト表示する際に「、」でつなげるときの処理方法の一例
配列の値を「、」でつないで出力する際、単純にforeachで繰り返し処理をすると「イヌ、サル、キジ、」となるが文字列最後の「、」を出力しない方法を3つ解説している。
-
-
include、requireのパス指定をdirname(__FILE__)、__DIR__と書く理由
include、requireのパスの指定を dirname(__FILE__)、__DIR__で記述する理由に付いて解説。相対パス、絶対パスを直書き、パスを書かない場合は何が問題かを説明。
-
-
PHPのデバッグで使う print_r、var_dump、var_exportの動作の違い
PHPのデバッグ等で変数や配列の中身を確認するために使用する関数print_r、var_dump、var_exportの動作の違い、仕様の違いについて確認した。var_exportがオススメ。
-
-
PHPで1ヵ月前、先月、今月1日、来月末の日付などの算出はDateTimeImmutableを使う
PHPには日時をオブジェクトとして生成する関数「DateTimeImmutable」「DateTime」が用意されている。これを利用して1ヶ月後、月初日、月末日、5日後などを指定して日付を取得できる。
-
-
PHPで APIにアクセスする際などに使用する cURLのサンプルプログラム
PHPのcURLを使用して各種APIにアクセスするサンプルプログラムを作成し、その処理を解説。カオナビAPIのみならず、他の多くのAPIにアクセスする際にも使用できる。
-
-
JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()
JSONとは「JavaScript Object Notation」の略でテキストベースのデータフォーマット。JSONの値をPHPで配列に変換するWebツールの紹介とその処理「json_encode()」「json_decode()」関数の解説。
-
-
PHPのソースで見慣れない記号が出てきた・アロー演算子(->)、ダブルアロー演算子(=>)
PHPのプログラムソースには見慣れない記号が出てきます。その意味や調べ方です。
-
-
PHP range関数を使って階乗と重複組み合わせを計算
PHPの range関数を使って階乗と重複組み合わせを計算し、それを元に乱数発生器を作成しました。