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

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

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

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

Q&A

解決済

1回答

1077閲覧

多重連想配列(3次元配列?)を連想配列に変換する方法

ttad5dreh2

総合スコア1

PHP

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

0グッド

0クリップ

投稿2021/10/07 03:09

編集2021/10/07 04:48

前提・実現したいこと

以下の多重連想配列で「Example1」「Example2」「Example3」を出力したいです。

ただ、できればループ文ではなく、多重連想配列を連想配列に戻してから
連想配列を通常配列に戻して各値を取得できればと考えています。

PHPで実現するにはどのように処理をするのが良いでしょうか?

現在の配列

array 'a' => int 1 'b' => string 'Sample1' 'c' => array 'a-1' => array 'a' => string 'Example1' 'b' => int 2 'a-2' => array 'a' => string 'Example2' 'b' => int 3 'a-3' => array 'a' => string 'Example3' 'b' => int 4 'd' => array 'e' => string '5' 'f' => string '0' 'g' => array empty

実現したい配列

Array ( [0] => 'Example1', [1] => 'Example2', [2] => 'Example3', )

array_searchやarray_columnも試しましたが
通常の配列へ戻せませんでした。

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

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

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

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

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

yambejp

2021/10/07 03:33

条件が提示されていません キーが"a"の値をとるとすると最初の1もヒットしてしまいます
m.ts10806

2021/10/07 03:38

質問じゃなく作業依頼ですね。 ただ、せめて配列をvar_exportの結果で提示を。
ttad5dreh2

2021/10/07 03:39

同じ名前のキーが存在することもあり、まずは多重連想配列を通常の連想配列に戻したいです。 キーが被っている名前が複数存在するデータベース構造は色々と大変ですね。
yambejp

2021/10/07 03:42

> 同じ名前のキーが存在することもあり、まずは多重連想配列を通常の連想配列に戻したいです ちょっと矛盾してます同じキーなら連想配列にはなりません
ttad5dreh2

2021/10/07 03:43

arrayが3つあるので多重連想配列の構造かと思っていましたが、違いますか?!
yambejp

2021/10/07 03:47

おっしゃる意味がちょっとわかりませんが、通常の連想配列というと [ 'a' => string 'Example1','a' => string 'Example2', 'a' => string 'Example3'] みたいなことをやりたいのかと判断しました。キーが競合する連想配列はつくれません。 むしろ最初の質問に答えてもらえると回答につながると思います
ttad5dreh2

2021/10/07 04:06

言葉が通じずすみません。こちらも質問の意味がわかっていません。。 多重連想配列と連想配列って同じですか? yambejpさんがおっしゃられる内容では同じ構造のように聞こえます。
yambejp

2021/10/07 04:12

で、結局どういうロジックで「Example1」「Example2」「Example3」を得るかは 説明できないのでしょうか?
ttad5dreh2

2021/10/07 04:17

プログラミングの素人なもので申し訳ないです。 シリアライズ化?されてデータベース内に保存されていた値を、SQLで取得してunserializeで変換したら多重連想配列の構造になったので、別の形に変換する方法を探しています。 意味は伝わりますか?
yambejp

2021/10/07 04:26 編集

回答付けてあります。やりたいことはこういうことではない? 回答を希望されていないならもうやめます。 (別に私が困っているわけではないので)
ttad5dreh2

2021/10/07 04:37

arrayが1つなくなって求めている形に近くなりました! 回答は希望しているのですが質問の仕方がむずかしくてすみません。
ttad5dreh2

2021/10/07 04:41 編集

多重連想配列と書きましたが、3次元配列とも言うんですかね? プログラミングむずかしすぎて挫折してしまいそうです。。
ttad5dreh2

2021/10/07 04:45

最終的にこうしたいです。 Array ( [0] => 'Example1', [1] => 'Example2', [2] => 'Example3', )
guest

回答1

0

ベストアンサー

ちょっと何をしたいかわからないので一旦回答

PHP

1$a=[ 2 'a' => 1, 3 'b' => 'Sample1', 4 'c' =>[ 5 'a-1' =>[ 6 'a' => 'Example1', 7 'b' => 2, 8 ], 9 'a-2' => [ 10 'a' => 'Example2', 11 'b' => 3, 12 ], 13 'a-3' => [ 14 'a' => 'Example3', 15 'b' => 4, 16 ], 17 ], 18 'd' =>[ 19 'e' => '5', 20 'f' => '0', 21 'g' => [], 22 ], 23 ]; 24$b=[]; 25array_walk_recursive($a,function($val,$key) use(&$b){ 26 $b[]=[$key,$val]; 27}); 28print_r($b);

投稿2021/10/07 04:14

yambejp

総合スコア116724

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

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

yambejp

2021/10/07 05:05

$b=[]; array_walk_recursive($a,function($val) use(&$b){ $b[]=$val; }); print_r($b); とすれば Array ( [0] => 1 [1] => Sample1 [2] => Example1 [3] => 2 [4] => Example2 [5] => 3 [6] => Example3 [7] => 4 [8] => 5 [9] => 0 ) が返ってくることがわかります。ExsampleXXのデータだけどうやって抜き出すのか なんの判断材料もしめされていないのでこれ以上は無理です
ttad5dreh2

2021/10/07 11:55

ありがとうございます!整理して書き直します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問