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

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

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

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

608閲覧

foreachで、多次元配列による入れ子

momolength

総合スコア62

foreach

foreachは、List・Collection・Arrayといったデータ構造の各要素に対して繰り返し処理を実行するために扱われる、制御構造の構文です。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

PHP

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/07/14 13:13

編集2021/07/14 13:33

foreach ($hensu as $key => $val)

var_dump($hensu)
結果:

array(2) { [1]=> array(5) { [1]=> string(1) "2" [2]=> string(1) "3" [3]=> string(1) "4" [4]=> string(1) "5" [5]=> string(1) "6" } [2]=> array(3) { [1]=> string(1) "6" [2]=> string(1) "7" [3]=> string(1) "8" } }

この1,2,3,4,5となっている部分($val)に、その値である2,3,4,5,6を入れたいです。
期待結果は、

array(2) { [1]=> array(5) { [2]=> string(1) "2" [3]=> string(1) "3" [4]=> string(1) "4" [5]=> string(1) "5" [6]=> string(1) "6" } [2]=> array(3) { [6]=> string(1) "6" [7]=> string(1) "7" [8]=> string(1) "8" } }

です。
これを$hensuではなく、新しい変数に入れたいです。

ちょっとforeachの多次元配列がややこしくて、ごちゃごちゃになってしまい...。
どう回して入れていけばいいですか?ご教授ください。
タイトルどうしようか迷ってて、わかりづらくてすいません。

ーーー試行錯誤中コード追記

//新しく入れる用 $num = array(); foreach ($hensu as $key => $val) { foreach ($val as $seckey => $secval) { $num[$key][]= $val; } }

こんな感じでやっていました。

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

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

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

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

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

tanat

2021/07/14 13:23

現状だとただの作業依頼になってしまっているので、うまく動いていなくても良いので自力で書いたコードを提示してください
momolength

2021/07/14 13:24

>自力で書いたコード あるにはありますが、やりつつ失敗しててって感じで逆にややこしくさせてしまわないかと思いまして。 すいません。追記しますね。
退会済みユーザー

退会済みユーザー

2021/07/14 21:46

input, 処理(仕様), output (期待したモノ, 現状のモノ)を明確にしてください。 現状だと output 以外が明示されていません。
guest

回答1

0

PHP

1<?php 2// Your code here! 3$arr = [1 => ["2","3","4","5","6"], 2=>["7","8","9"]]; 4var_dump($arr); 5$arr2 = []; 6 7foreach($arr as $key => $val){ 8 foreach($val as $k => $v){ 9 $arr2[$key][$v] = $v; 10 } 11 12} 13 14var_dump($arr2);

実行結果

array(2) { [1]=> array(5) { [0]=> string(1) "2" [1]=> string(1) "3" [2]=> string(1) "4" [3]=> string(1) "5" [4]=> string(1) "6" } [2]=> array(3) { [0]=> string(1) "7" [1]=> string(1) "8" [2]=> string(1) "9" } } array(2) { [1]=> array(5) { [2]=> string(1) "2" [3]=> string(1) "3" [4]=> string(1) "4" [5]=> string(1) "5" [6]=> string(1) "6" } [2]=> array(3) { [7]=> string(1) "7" [8]=> string(1) "8" [9]=> string(1) "9" } }

投稿2021/07/14 13:49

tanat

総合スコア18713

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

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

momolength

2021/07/14 13:51

もしかしてちょっと惜しかった感じですかね…。今日は閉じてしまったのでまた明日確認してみます。 夜遅くにありがとうございました。
tanat

2021/07/14 13:56

そうですね。 多次元配列のループは出来ているが、子配列の要素を使えていない感じですね。 ソースを比較したり、途中で$key,$val,$k,$vに何が入っているかを var_dump($key); die(); みたいな感じで止めながら確認してみると理解が進むと思いますよ。
momolength

2021/07/14 13:59

そのdieは初めてみました。調べます。 なんか何がなんやらでごっちゃになっていました。しかしまだ確認できてないので、baは保留とさせていただきます。 ありがとうございました。
momolength

2021/07/14 21:26

array(2) { [1]=> array(1) { [0]=> string(1) "0" } [3]=> array(1) { [0]=> string(1) "0" } } こうなってしまいます。 入れ方も同じです。
momolength

2021/07/14 21:42

>$arr = [1 => ["2","3","4","5","6"], 2=>["7","8","9"]]; ここでした。質問文をもう一度みてみてください。もう一つ下に階層あります。
tanat

2021/07/14 23:46

> もう一つ下に階層あります どの部分でしょうか?
tanat

2021/07/14 23:52

現在の質問には記述されていないので te2jiさんのコメントの通り、 input, 処理(仕様), output (期待したモノ, 現状のモノ)を明確にしてください。 現状だと output 以外が明示されていません
momolength

2021/07/15 00:10

いいえ。ですからみてください。 あなたの書き方で言うと、 $arr = [1 => ["2","3","4","5","6"] ではなく、 $arr = [1 => ["1"=>"2","2"=>"3","3"=>"4","4"=>"5","5"=>"6"] です。
tanat

2021/07/15 00:22 編集

$arr = [1 => ["2","3","4","5","6"]] と $arr = [1 => ["1"=>"2","2"=>"3","3"=>"4","4"=>"5","5"=>"6"]] は両方とも同じ2次元配列ですよ。 両方ともvar_dump()で出力して比較してみて下さい。 > もう一つ下に階層あります そのため、「もう一つ下に階層」と言うのが何を指しているか不明です。 繰り返しになりますが、 te2jiさんのコメントの通り、 input, 処理(仕様), output (期待したモノ, 現状のモノ)を明確にしてください。 現状だと output 以外が明示されていません 少なくとも $hensu を定義している部分のコードを示してください
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問