###実現したいこと
連想配列の結合で、キーが重複しても、値を残せますか?
「$furniture_menus」と「$tableware_menus」を結合するときに、下記のようにしたいです。
しかし後述のコードだと、コメントアウトしてある値が消えてしまいまして、それらを残したいというのが目的になります。
PHP
1array ( 2 'taro' => 3 array ( 4 0 => 'chair', // 後述のコードだと消えてしまう 5 1 => 'desk', // 後述のコードだと消えてしまう 6 2 => 'shelf', // 後述のコードだと消えてしまう 7 3 => 'spoon', 8 4 => 'fork', 9 ), 10 'jiro' => 11 array ( 12 0 => 'knife', 13 1 => 'chopsticks', 14 ), 15)
###試したこと
こちらのように「array_merge」によって上の2つの結合しました。
すると上に書いたように「taro」のメニューが「spoon」と「fork」しか残らなくなってしまいます。
php
1<?php 2function get_menus( $type ){ 3 4 $furniture_menus = [ 5 'taro' => [ 'chair', 'desk', 'shelf' ], 6 ]; 7 8 $tableware_menus = [ 9 'taro' => [ 'spoon', 'fork' ], 10 'jiro' => [ 'knife', 'chopsticks' ], 11 ]; 12 13 if( $type=='furniture' ){ 14 return $furniture_menus; 15 } 16 else if( $type=='tableware' ){ 17 return $tableware_menus; 18 } 19 else if( $type=='all' ){ 20 return array_merge($furniture_menus, $tableware_menus); 21 } 22 23} 24 25$menus = get_menus( 'all' ); 26var_export( $menus );
どのようにしたら、「taro」というキーが重複していても、その値をすべて残すことができるでしょうか?
ちなみに、「taro」や「jiro」などのキーだけ重複するものがあり、その値に重複はありません。
宜しくお願い致します。

回答2件
あなたの回答
tips
プレビュー