エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


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″」を編集したい!というのが目的でした。
 
ググっても出てくる処理があんまり美しくないなぁ、と思った次第です。

 - PHP・Smarty・ECCUBE

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

AdminerはphpMyAdmin代替のデータベース管理ツール

AdminerはphpMyAdminとほぼ同機能のデータベース管理ツール。PHP 1ファイルのため設置が非常に簡単で軽快に動作し、phpMyAdminの置き換えで使うのも問題なし。

PHPのcURLでAPIやWebサイトへのアクセス方法。file_get_contentsとの比較
PHPのcURLでAPIやWebサイトへのアクセス方法。file_get_contentsとの比較

PHPからWebサイトにアクセスしてHTMLを取得、APIにアクセスして情報を取得する場合は、cURLがオススメ。file_get_contentsでも可能だがエラー制御に難がありトラブルのもとになる。

PHPのソースで見慣れない記号が出てきた・アロー演算子(->)、ダブルアロー演算子(=>)

PHPのプログラムソースには見慣れない記号が出てきます。その意味や調べ方です。

PHPで特定の日間の日付を for、strtotimeで表示する

ある特定の間の日付の情報を for文、strtotimeを使って作成し、その解説をしています。

配列の値をテキスト表示する際に「、」でつなげるときの処理方法の一例
配列の値をテキスト表示する際に「、」でつなげるときの処理方法の一例

配列の値を「、」でつないで出力する際、単純にforeachで繰り返し処理をすると「イヌ、サル、キジ、」となるが文字列最後の「、」を出力しない方法を3つ解説している。

乱数発生器(パスワード生成サービス)がバージョンアップで高速化!
乱数発生器(パスワード生成サービス)がバージョンアップで高速化!

乱数やパスワードを生成する乱数発生器を高速化!重複しない10桁、20桁の文字列を10万件、20万件と生成することも可能!イベントのキャンペーンのシリアルコードなどにも利用可能!

PHP range関数を使って階乗と重複組み合わせを計算

PHPの range関数を使って階乗と重複組み合わせを計算し、それを元に乱数発生器を作成しました。

include、requireのパス指定をdirname(__FILE__)、__DIR__と書く理由

include、requireのパスの指定を dirname(__FILE__)、__DIR__で記述する理由に付いて解説。相対パス、絶対パスを直書き、パスを書かない場合は何が問題かを説明。

PHPでスクレイピング。phpQueryとphp-simple-html-dom-parserの比較と設置方法
PHPでスクレイピング。phpQueryとphp-simple-html-dom-parserの比較と設置方法

「PHP スクレイピング」で検索すると「phpQuery」ばかりヒットするが、10年以上も放置されている。なので今も開発が続いている「PHP Simple HTML DOM Parser」をオススメする。

PHPパーミッション変更のchmod関数・モードを変数で指定する方法

パーミッション変更関数であるchmod関数の第二引数、ファイルモードの指定に変数を使う場合は8進数に変換するoctdec関数を使って変換します。