次のPHPコードがあります
<?php
$myRoom = array(
'Kitchen' => array('Dining Table','4 Chairs','Dishes'),
'Bathroom' => array('Towel','Medicines','Shower Gel'),
'Bedroom' => array(
'Bed' => array(
'Legs' => 4,
'Bedsheet' => 'woolen',
'Blanket' => array(
'Winter' => 'Thick',
'Summer' => 'Thin',
),
),
),
'Person' => 'Only Me',
);
my_room($myRoom);
function my_room($params) {
foreach ($params as $key => $value) {
yes_it_is(" <br /> ".$key." : ");
my_room($value);
yes_it_is($value." <br /> ");
}
}
function yes_it_is($val) {
echo $val;
}
以下の関数は文字列を出力し、コードの出力は次のようになります。
キッチン : 0 : ダイニングテーブル
1:椅子4脚
2 : 料理の配列
バスルーム : 0 : タオル
1 : 医薬品
2 : シャワージェルアレイ
ベッドルーム : ベッド : 脚 : 4
シーツ : ウール
毛布 : 冬 : 厚手
夏 : シン アレイ アレイ アレイ
人物 : 私だけ
他の値で出力された「配列」文字列を取り除くにはどうすればよいですか。他の回避策もいただければ幸いです。
編集:
出力の文字列としてではなく、連想配列にあったキーと値のみArray
を出力したい。
Edit2:Daedelusの提案に従って質問が更新されました
my_room 関数を次のように変更しました。
function my_room($params) {
foreach ($params as $key => $value) {
yes_it_is(" <br /> ".$key." : ");
if (is_array($value))
my_room($value);
else
yes_it_is($value." <br /> ");
}
}
しかし、それでも出力は次のとおりです。
キッチン : 0 : ダイニングテーブル
1:椅子4脚
2 : 食器
バスルーム : 0 : タオル
1 : 医薬品
2 : シャワージェル
ベッドルーム : ベッド : 脚 : 4
シーツ : ウール
毛布 : 冬 : 厚手
夏:シンアレイアレイ
人物 : 私だけ
後に2枚Array
印刷されていますThin
Edit3: 申し訳ありませんが、私の間違いです。受け入れられた結果は完全に機能します。テスト中に namemy_room
とmy_room2
の 2 つの関数を一緒に使用し、両方の関数を一緒Array
にテストすると表示されましたが、コメントアウトして回答のように関数my_room2
のみを表示すると、完全に機能します。my_room
混乱が生じて申し訳ありません。2 つの関数を一緒にテストしていたのですが、出力が変でした。
編集4:
以下の回答に基づいて、次のような見栄えの良い1行の三項演算子に変更しました。
function my_room($params) {
foreach ($params as $key => $value) {
yes_it_is(" <br /> ".$key." : ");
is_array($value) ? my_room($value) : yes_it_is($value." <br /> ");
}
}