連想配列の結合についての質問

このQ&Aのポイント
  • 連想配列の結合方法を探しています。
  • 3つの連想配列を1つに統合する方法を教えてください。
  • 統合後の連想配列の取り出し方が知りたいです。
回答を見る
  • ベストアンサー

こういった連想配列の結合は可能でしょうか?

お世話になっておりますm(_ _)m 今、下記のような3つの連想配列がありまして、 これらを1つの連想配列に統合出来ないか調べているのですが、 上手い方法が見つかりません。 $arrayAAA[0]['name'] = "goo"; $arrayBBB[0]['color'] = "white"; $arrayCCC[0]['media'] = "web"; ↓統合してこのようにしたい $newArray[0]['name'] //"goo" $newArray[0]['color'] //"white" $newArray[0]['media'] //"web" 上記の例では0番目の配列のみですが、 実際は40番までインデックス値があります。 もし、これを実現する方法をご存知の方がおりましたら、 ご教授頂けませんでしょうか? よろしくお願い致しますm(_ _)m

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5085/13292)
回答No.1

全ての配列の一次元目のキーが0から40まで必ずあるのならば $newArray = array(); for ($Cnt = 0; $Cnt <= 40; $Cnt++) { $newArray[$Cnt] = array_merge($arrayAAA[$Cnt], $arrayBBB[$Cnt], $arrayCCC[$Cnt]); } $arrayAAA、$arrayBBB、$arrayCCC それぞれで一次元目のキーがバラバラなのであれば $newArray = array(); foreach ($arrayAAA as $Key => $Val) { if (!isset($newArray[$Key])) { $newArray[$Key] = array(); } $newArray[$Key] = array_merge($newArray[$Key], $Val); } foreach ($arrayBBB as $Key => $Val) { if (!isset($newArray[$Key])) { $newArray[$Key] = array(); } $newArray[$Key] = array_merge($newArray[$Key], $Val); } foreach ($arrayCCC as $Key => $Val) { if (!isset($newArray[$Key])) { $newArray[$Key] = array(); } $newArray[$Key] = array_merge($newArray[$Key], $Val); } といった感じでしょうか。

crzyonez777
質問者

お礼

1つ目の方で今回のケースは大丈夫です! ご丁寧に2つ目のケースの方も回答頂きありがとうございます!! 感謝ですm(_ _)m

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

こんな感じでforeachでまわしてみては? foreach($arrayAAA as $key=>$vals){ $n=&$newArray[$key]; $n["name"]=$vals["name"]; $n["color"]=$arrayBBB[$key]["color"]; $n["media"]=$arrayCCC[$key]["media"]; }

関連するQ&A

  • 配列や連想配列について

    言語一般の配列や連想配列について 最近どういう解釈をしていいのか わからなくなってしまいました。 仮にPerlで話をさせてもらいますと、 連想配列%FORMがあるとき、 個々の要素にアクセスする場合 例えば$FORM{'name'}などと記述しますが、 この$FORM{'name'}を みなさんはどのように解釈しているでしょうか? $FORM{' '}にキー nameを 代入しているようなイメージで、 「連想配列%FORMからキー'name'の値を取得する」 という考え方でしょうか? わたしは最近、 $FORM{'name'}はそれ自体が一つの変数という 考え方が出来るのではないかという気がしているのですが、 連想配列の実装から考えると この考え方は正しいのでしょうか? 以前、配列について同様の質問を したことがあります。 例えばC言語でint a[100]と宣言した場合は、 連続的なアドレスに確保されるため、 a[2]はaという名前のアドレスから a + 2 番目の場所という意味になるが、 言語によっては不連続なアドレスに 確保されるため、a[2]は一つの変数名として 考える必要がある・・ との回答でした。 ならば連想配列の場合も もし不連続なアドレスに確保されるならば、 $FORM{'name'} は一つの変数名と 考えたほうが正しいのではないかと 思ったからです。 連想配列の内部的な処理がどうなっているのか 教えて頂きたいです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 連想配列とforeach

    連想配列 %hogeにおいて、.name の名前が最後に付く配列の値を取り出したいと思い、下記のようにしました。 foreach ($hoge{/.*\.name$/}) {  print "$_\n"; } としてみましたが期待した出力がされませんでした。こういう描き方って出来ないんでしょうか?それともどこか間違ってますか?

    • ベストアンサー
    • Perl
  • 多次元連想配列

    phpで $juices["apple"]["green"] = "good"; このように多次元連想配列を簡単に生成できますが、javaでは、どのように行えばいいのでしょうか? いろいろな方法があると思われるのですが、javaでこのような多次元連想配列をスマートに実現する方法をご教授いただきたく質問させていただきました。

    • ベストアンサー
    • Java
  • 連想配列と別配列とのマッチング

    以下の連想配列と別にあるテキストファイルを配列にして ”マッチした商品名の全てのデータを表示したいです。 ■連想配列の形↓■ 50を超えるリンゴの種類が、以下のような 連想配列($alldata)の形であります。 $alldata = [1]=> array(5) { ["no"]=> string(1) "1" ["name"]=> string(5) "san-tugaru" ["color"]=> string(3) "red" ["price"]=> string(3) "150" ["memo"]=> string(10) "aomori" } [2]=> array(5) { ["no"]=> string(1) "2" ["name"]=> string(5) "ko-gyoku" ["color"]=> string(3) "red" ["price"]=> string(3) "250" ["memo"]=> string(10) "yamagata" } というふうに50個のリンゴのデータ続きます。 リンゴの配列情報の詳細は以下の通りです。 ※配列のKeyの番号とvalueの商品Noは同じで連想配列にしています。 商品No ["no"] 名称  ["name"] 色   ["color"] 価格  ["price"] 産地  ["memo"] +-------------------------------------------------+ ■テキストファイル(select-ringo.txt)の内容と意味■ このテキストファイルは、商品No「4、5、12、30」の リンゴを選んで表示したい場合です。 +----+ 4,1,10 5,4,13 12,2,9 30,3,15 +----+ ◇カンマで区切られた数字の意味◇ ・各行の先頭の数字は「商品No.」を選択します。 ・カンマで区切られた2番目の数字は、”色”を選択します。 たとえば、1行目であれば、 商品No 4 の全ての情報は カラー1=#ff0000 echo表示されます。 他の番号の場合は色は以下の通りです。 カラー1 =#ff0000 カラー2 =#ff6600 カラー3 =#ff0066 カラー4 =#ff3399 ・3番目の数字はフォントサイズ(px)を意味します。 +---------------------------------------------------+ テキストファイルに”商品番号のみ”を入れると以下のスクリプトで動作しますが、 カンマで区切った場合のマッチング方法に悩んでいます。 ※以前、こちらで親切な方に方法を教えていただきました↓ $selectNo = array_map(rtrim, file("select-ringo.txt")); foreach ($selectNo as $num) { if (is_numeric($num) && array_key_exists($num, $alldata)) { 表示 } } みなさん、お力をお貸しください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 連想配列を配列に入れるには

    下記のような連想配列を配列に入れる簡単な方法はありますか。 array("a"=>"1","b"=>"2") 期待する結果(print_r) Array ( [0] => Array ( "a" => "1" ) [1] => Array ( "b" => "2" ) ) 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • 連想配列内の文字列を結合できませんか

    連想配列?の$col[""]内の文字列を結合することはできませんか. PHP4とMySQL 4.0の組み合わせでアンケートページを作ります. 質問1 が 1.phpに($pageid=1;) 質問2 が 2.phpに($pageid=2;) 質問3 が 3.phpに($pageid=3;) 質問4 が 4.phpに($pageid=4;) 質問5 が 5.phpに($pageid=5;) それぞれあります. これに対応して,回答を格納するDBも,CHAR(1)でAns1~Ans5まであります.ここで, $pageid=1; $rst = mysql_query($sql, $con); $col = mysql_fetch_array( $rst); ${"Answer" . $pageid} = $col["Ans" . $pageid]; echo $Answer1; みたいに,連想配列名を変数で指定するような強引技はできないのでしょうか? http://oshiete1.goo.ne.jp/qa2706401.html で同じような質問を 一旦は取り下げたのですが,やっぱり実現したいです.

    • ベストアンサー
    • PHP
  • 連想配列、オブジェクト配列の使い分け

    お世話になります。 データベースで結果を取得する場合など、連想配列のままではなく何故、わざわざオブジェクトに格納する様な手法が使われるのでしょうか? 連想配列のままで処理するほうが早いと思いますし、それに付随するクラスファイルも多くなります。また、「結びつきを緩くして仕様変更に耐えうる様に」など聞きますが、余計複雑になってしまう様な気がしますので、メリットが今ひとつ分からず判断に迷ってしまいます。 どの様な使い分け、考え方をすれば良いかアドバイスいただけたら幸いです。 何卒、宜しくお願いします。 例) ※必要と思われる部分のみ記述しております。 ■連想配列 while($row=mysql_fetch_assoc($res)){ ~以下必要な処理} ■オブジェクト配列 while($row=mysql_fetch_assoc($res)){ $example = new Example(); $example->setName($row['name']); $example->setAddr($row['addr']); $array[] = $example } ~以下必要な処理 ○モデル class Example { private $_name = null; private $_addr = null; public function __construct() {} public function setName($name) { $this->_name = (string) $name; return $this; } public function getName() { return $this->_name; } public function setAddr($addr) { $this->_addr = (string) $addr; } ~以下省略 }

    • ベストアンサー
    • PHP
  • 2つの連想配列を比較して一致するものを出力

    下記のような連想配列が2つあります。 それらの配列の3つ目の電話番号(070-0000-000等)のみを比較して一致する連想配列を配列にして出力するようなプログラムを考えています。 連想配列同士を比較する方法が見つからなかったため、どのように書いたら良いのかわかりません。 ご教授お願い致します。 【既存の連想配列】 <?php $first = array(     'test_1' => array(         0 => '山田太郎',         1 => 'ヤマダタロウ',         2 => '090-0000-0000',     ),     'test_2' => array(         0 => '田中次郎',         1 => 'タナカジロウ',         2 => '080-0000-0000',     ),     'test_3' => array(         0 => '佐藤三郎',         1 => 'サトウサブロウ',         2 => '070-0000-0000',     ), ); $second = array(     'test_1' => array(         0 => '鈴木四郎',         1 => 'スズキシロウ',         2 => '050-0000-0000',     ),     'test_2' => array(         0 => '佐藤五郎',         1 => 'サトウサブロウ',         2 => '070-0000-0000',     ),     'test_3' => array(         0 => '安藤六郎',         1 => 'アンドウロクロウ',         2 => '000-0000-0000',     ), ); ?> 【比較後の配列(例)】 $result //に結果を格納 この$resultの中身は、 array('佐藤五郎','サトウサブロウ','070-0000-0000'); のような感じです。

    • ベストアンサー
    • PHP
  • 連想配列からの値の取り出し

    お世話様です。 タイトルにもありますが連想配列を作成した後(以下に記述例)に その配列からキーを指定して値を取得したいと思っております。 array_keys関数だと値を指定してキーを取得するみたいで うまくいきませんでした。 何かよい方法ありませんでしょうか? //配列に格納 while (条件) {   $aParaOra += array((キー) => (値)); }

    • ベストアンサー
    • PHP
  • 【Smarty】連想配列のキーの文字列、変数の結合について

    Smartyで連想配列のキーにある文字列、変数の結合の方法が分からないので質問させていただきます。 通常のphpで $data['name'.$cnt] といった書き方をSmartyのテンプレート側で書く場合はどのようにすれば良いのでしょうか? 「|cat:」や「`(バッククォート)」等、一通り試しましたがうまく表示されません。 宜しくお願い致します。

    • 締切済み
    • PHP