🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

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

Q&A

解決済

1回答

769閲覧

多次元配列のまとめ方

kinisinai

総合スコア28

PHP

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

0グッド

0クリップ

投稿2019/11/25 10:54

編集2019/11/27 01:58

下記のような配列が存在した時に

PHP

1 $testarr[] = array( 2 'namae' => '田中', 3 'favorite' => 'マグロ' 4 ); 5 $testarr[] = array( 6 'namae' => '田中', 7 'favorite' => 'ハマチ' 8 ); 9 $testarr[] = array( 10 'namae' => '田中', 11 'favorite' => 'いくら' 12 ); 13 $testarr[] = array( 14 'namae' => '田中', 15 'favorite' => 'サーモン' 16 ); 17 $testarr[] = array( 18 'namae' => '田中', 19 'favorite' => 'イワシ' 20 ); 21 $testarr[] = array( 22 'namae' => '松田', 23 'favorite' => 'ししゃも' 24 ); 25 $testarr[] = array( 26 'namae' => '松田', 27 'favorite' => 'サバ' 28 ); 29 $testarr[] = array( 30 'namae' => '松田', 31 'favorite' => 'タイ' 32 ); 33 $testarr[] = array( 34 'namae' => '松田', 35 'favorite' => 'ぶり' 36 ); 37 $testarr[] = array( 38 'namae' => '松田', 39 'favorite' => 'カレイ' 40 );

nameが同じもので1つの配列として新しい配列を作成したのですがやり方がわからず困っております。
イメージとしては下記のような配列を新規に作成したいです。

PHP

1 $kanseilist = array ( 2 0 => 3 array ( 4 'name' => '田中' 5 array ( 6 0 => 'マグロ', 7 1 => 'ハマチ', 8 2 => 'いくら', 9 3 => 'サーモン', 10 4 => 'イワシ', 11 ), 12 1 => 13 array ( 14 'name' => '松田' 15 array ( 16 0 => 'ししゃも', 17 1 => 'サバ', 18 2 => 'タイ', 19 3 => 'ぶり', 20 4 => 'カレイ', 21 )22); 23

下記のものを試してみたのですがうまく振り分けられず苦戦しています。

PHP

1$kanseilist = array(); 2 3      for($i = 0; $i < count()$testarr); $i ++){ 4 for ($j = 0; $j < count($testarr); $j ++) { 5 if ($testarr[$i]['name'] == $testarr[$j]['name']) { 6 $kanseilist[] = array( 7 'name' => $testarr[$j]['name'], 8 'shohi' => $testarr[$j]['favorite'] 9 ); 10 } 11 } 12 }

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

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

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

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

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

H40831

2019/11/25 11:14

$i をインデックスとするfor文が抜けているので追記してください。
kinisinai

2019/11/27 01:58

ご指摘ありがとうございます。追記させていただきました。
guest

回答1

0

ベストアンサー

php

1<?php 2$testarr=[]; 3 4$testarr[] = array( 5 'namae' => '田中', 6 'favorite' => 'マグロ' 7); 8$testarr[] = array( 9 'namae' => '田中', 10 'favorite' => 'ハマチ' 11); 12$testarr[] = array( 13 'namae' => '田中', 14 'favorite' => 'いくら' 15); 16$testarr[] = array( 17 'namae' => '田中', 18 'favorite' => 'サーモン' 19); 20$testarr[] = array( 21 'namae' => '田中', 22 'favorite' => 'イワシ' 23); 24$testarr[] = array( 25 'namae' => '松田', 26 'favorite' => 'ししゃも' 27); 28$testarr[] = array( 29 'namae' => '松田', 30 'favorite' => 'サバ' 31); 32$testarr[] = array( 33 'namae' => '松田', 34 'favorite' => 'タイ' 35); 36$testarr[] = array( 37 'namae' => '松田', 38 'favorite' => 'ぶり' 39); 40 41$temp = []; 42$arr = []; 43 44foreach ($testarr as $value) { 45 $temp[$value['namae']][] = $value['favorite']; 46} 47 48foreach ($temp as $name => $favorites) { 49 $arr[] = [ 50 'name' => $name, 51 $favorites 52 ]; 53} 54 55var_dump($arr); 56

投稿2019/11/25 11:11

編集2019/11/25 11:18
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kinisinai

2019/11/25 11:17

ありがとうございます。 2回目のforeachの部分は$resではなく$tempで間違い無いでしょうか?
退会済みユーザー

退会済みユーザー

2019/11/25 11:17

ですです
kinisinai

2019/11/25 11:19

ありがとうございます。 ベストアンサーにさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問