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

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

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

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

Q&A

解決済

1回答

1124閲覧

php 配列

navca

総合スコア44

PHP

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

0グッド

0クリップ

投稿2017/03/25 05:13

編集2017/03/25 05:30

初心者で恐縮ですがご教授ください。

$Aの配列を$Bのように、特定のキーの値が同じだった場合(ここでは名前の佐藤)、特定のキーの配列のみをピックアップし(実際には配列内には複数のキー&値があるので削除という形ではなくピックアップする形で実現したいです)、それを一個の配列にまとめ、重複した名前がなければ名前と出身だけピックアップして配列にするという操作がしたいです。

$A= [ ['名前'=>'佐藤','出身'=>'北海道','職業'=>'営業'], ['名前'=>'江本','出身'=>'神奈川','職業'=>'プログラマー'], ['名前'=>'佐藤','出身'=>'新潟','職業'=>'事務'], ['名前'=>'武田','出身'=>'長野','職業'=>'フリーター'] ]

キー名が重複しないようfor文でキーに1,2...と振っています。

$B= [ ['名前'=>'佐藤','出身'=>'北海道', '名前1'=>'佐藤','出身1'=>'新潟'], ['名前'=>'江本','出身'=>'神奈川'], ['名前'=>'武田','出身'=>'長野'] ]

基礎的な知識だけではできず、array_count_valuesなどの関数も検討してみましたが歯が立ちません。よろしくお願いします。

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

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

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

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

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

kei344

2017/03/25 05:16

['名前'=>'佐藤','出身'=>'北海道','名前'=>'佐藤','出身'=>'新潟'] のようにキー名が重複していますが、重複できないのでは?
navca

2017/03/25 05:18

すいません。忘れてました。追加する場合にはfor文で名前1,出身1としています。
kei344

2017/03/25 05:26

このエリアは質問の編集を依頼するものなので回答する際に見られない方もおられるため、質問文を編集されることをお勧めします。
navca

2017/03/25 05:30

ありがとうございます。
Zuishin

2017/03/25 05:44

名前1 名前2 にするとかえって扱いにくくないですか? $B= [[['名前'=>'佐藤','出身'=>'北海道'],['名前'=>'佐藤','出身'=>'新潟']],['名前'=>'江本','出身'=>'神奈川'],['名前'=>'武田','出身'=>'長野']] のようにしてみては?
Zuishin

2017/03/25 05:45 編集

ついでに言うなら $B= [[['名前'=>'佐藤','出身'=>'北海道'],['名前'=>'佐藤','出身'=>'新潟']],[['名前'=>'江本','出身'=>'神奈川']],[['名前'=>'武田','出身'=>'長野']]] のようにするとループで回す時にもっと扱いやすくなると思います。
navca

2017/03/25 05:59

ありがとうございます。検討します。
guest

回答1

0

ベストアンサー

やりたいことからすると、こういう配列を作れればよいのでしょうか?

PHP

1array('佐藤' => array( 0 => array('出身' => '北海道', '職業' => '営業'), 2 1 => array('出身' => '新潟', '職業' => '事務'), 3 ), 4 '江本' => array( 0 => array('出身' => '神奈川', '職業' => 'プログラマー'), ), 5 '武田' => array( 0 => array('出身' => '長野', '職業' => 'フリーター'), ), 6);

こんな感じですかねえ。

PHP

1$result = array(); 2foreach($A as $data) { 3 $key = $A['名前']; 4 if (!array_key_exists($key, $result)) { 5 $result[$key] = array(); 6 } 7 $result[$key][] = array('出身' => $A['出身'], '職業' => $A['職業']); 8}

投稿2017/03/25 09:59

tacsheaven

総合スコア13703

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

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

navca

2017/03/25 16:23

ありがとうございます。明日検討します。
navca

2017/03/26 09:20

ありがとうございました。できました。こんなにシンプルにできるものなんですね。勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問