質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

3744閲覧

2次元配列をカンマ区切りで結合する方法

avantgarden

総合スコア121

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/03/27 05:07

var_dump($array_sample); [0]=> array(2) { ["name"]=> string(7) "name1" ["value"]=> string(11) "value1" } [1]=> array(2) { ["name"]=> string(7) "name2" ["value"]=> string(11) "value2" } [2]=> array(2) { ["name"]=> string(7) "name3" ["value"]=> string(17) "value3" }

という配列($array_sample)があり、各値の配列自体をカンマ区切りで結合する方法を教えていただきたいです。

array( "name" => name1, "value" => value1 ), array( "name" => name2, "value" => value2 ), array( "name" => name3, "value" => value3 )

という結果を得たいのですが、

implode(',', $array_sample);

とするとエラーになります。

簡単なことのような気がするのですが…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/03/27 05:33

「という配列」「という結果」が同じ物ですが、結果をどのように使うのでしょうか。
avantgarden

2019/03/27 05:34

既存の2次元配列の途中に挿入することが目的でした。 しかし、やはり不可能のようなので、別の方法を考えます。
guest

回答4

0

ベストアンサー

結論から言うと不可能です。
配列は文字列では無いので、カンマで連結することは出来ません。

json_encode()serialize()で文字列に変換してから連結するなりの方法を取る必要があります。

配列をカンマで連結しなければならない理由を追記すると、より適した方法での回答が得られるかとは思います。

投稿2019/03/27 05:32

編集2019/03/27 05:34
tanat

総合スコア18713

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

avantgarden

2019/03/27 05:36

配列自体の結合に違和感を抱いたのですが、やはり不可能ですね。 ご記載の方法を含めて考えます。ありがとうございます。
tanat

2019/03/27 05:44

> 既存の2次元配列の途中に挿入することが目的でした。 という事であれば、(よほど深刻な理由が無い限りは)文字列操作を経由するのではなく、 既存の2次元配列を配列として操作するのがベストですね。 https://www.php.net/manual/ja/book.array.php この辺を眺めると使える関数があるかもしれません。
guest

0

巷で流行りの写経してみた。

php

1<?php 2$test = 3'array( 4 "name" => name1, 5 "value" => value1 6), 7array( 8 "name" => name2, 9 "value" => value2 10), 11array( 12 "name" => name3, 13 "value" => value3 14)'; 15 16$array = array( 17 array( 18 "name" => 'name1', 19 "value" => 'value1' 20 ), 21 array( 22 "name" => 'name2', 23 "value" => 'value2' 24 ), 25 array( 26 "name" => 'name3', 27 "value" => 'value3' 28 ) 29); 30$result = ""; 31foreach($array as $key1 => $tmp_array){ 32 $result .= "array(\n"; 33 foreach($tmp_array as $key2 => $val){ 34 $result .=" \"${key2}\" => ${val},\n"; 35 } 36 $result = substr($result, 0, -2); 37 $result .="\n),\n"; 38} 39$result = substr($result, 0, -2); 40 41if($result === $test){ 42 echo 'OK!'; 43} else { 44 echo 'NG!'; 45}

投稿2019/03/27 06:13

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanat

2019/03/27 06:55

思いついたけど書かなかったw 最後にeval()で配列に戻したりすることを想定するのかしら
退会済みユーザー

退会済みユーザー

2019/03/27 07:02

写経なので、その後のことは知らんですw
guest

0

array()にこだわらないならjson_encodeしても良いかも

PHP

1$a=array( 2 array("name"=>"name1","value"=>"value1"), 3 array("name"=>"name2","value"=>"value2"), 4 array("name"=>"name3","value"=>"value3"), 5); 6print json_encode($a,JSON_PRETTY_PRINT);

投稿2019/03/27 05:21

yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

avantgarden

2019/03/27 05:23

すみません。プログラム上、配列じゃないとだめです。
yambejp

2019/03/27 05:31

ごめんなさい、説明がたりなかった array()という表記以外、PHPでは[]も配列です またいわゆる連想配列は{}になります。 なので例示したものも配列を表現したものです
guest

0

php

1var_export($array_sample);

php

1<?php 2$array = [array( 3 "name" => "name1", 4 "value" => "value1" 5), 6array( 7 "name" => "name2", 8 "value" => "value2" 9), 10array( 11 "name" => "name3", 12 "value" => "value3" 13)]; 14echo prettyPrint2DArray($array); 15function prettyPrint2DArray($arr) { 16 $ret = []; 17 foreach($arr as $elm) { 18 $ret[] = prettyPrint1DArray($elm); 19 } 20 return implode(",".PHP_EOL, $ret); 21} 22function prettyPrint1DArray($assoc) { 23 $ret = "array(".PHP_EOL; 24 $vals = []; 25 foreach($assoc as $key => $value) { 26 $vals[] = " \"{$key}\" => {$value}"; 27 } 28 $ret .= implode(",".PHP_EOL, $vals).PHP_EOL; 29 $ret .= ")"; 30 return $ret; 31}

投稿2019/03/27 05:10

編集2019/03/27 05:39
papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

avantgarden

2019/03/27 05:22

ありがとうございます。 試してみましたが、 array( "name" => name1, "value" => value1 ), array( "name" => name2, "value" => value2 ), array( "name" => name3, "value" => value3 ) の形では返ってこないです。 implodeで、配列の値の文字列をカンマ区切りにするのと同じように、配列自体をカンマ区切りで出したいのです。 配列も変数なので、変数をカンマ区切りというのは変な気がしますが。
papinianus

2019/03/27 05:39 編集

こーどをはったらへんになったので回答にうつす
papinianus

2019/03/27 05:42

ただ見たいだけじゃなくて、利用が目的であれば、var_export($samplearray, true)で得た結果は、phpの変数表現として正しい状態になるので、何でダメなのか分からないです。 逆に、「"name" => name3,」のような文字列にしてしまっては、それで得た文字「name3,」部分は、undefined constantとかのエラーになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問