我有以下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:Dishes Array
浴室:0:毛巾
1:药物
2:沐浴露阵列
卧室:床:腿:4
床单:羊毛
毯子:冬天:厚
夏季:薄阵列阵列
人:只有我
如何摆脱使用其他值打印的'Array'字符串。任何其他解决方法也将不胜感激。
编辑:
我想只打印关联数组中的键和值,而不是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
床单:羊毛
毯子:冬天:厚
夏季:薄阵列
人:只有我
在Array
Thin
编辑3:抱歉我的错误,接受的结果完美无缺。在测试时,我有两个函数,名为my_room
和my_room2
,同时显示了两个函数Array
的测试,但是当我注释掉my_room2
并且只显示{{ 1}}在答案中起作用,它完美地运作。对于造成的任何混乱,我很抱歉,我正在测试两个功能,输出很奇怪。
Edit4:
根据以下答案,我将其改为好看的一线三元运算符,如:
my_room
答案 0 :(得分:2)
将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 /> ");
}
}
答案 1 :(得分:0)
如果您只想忽略传递给函数的数组:
function yes_it_is($val) {
if (!is_array($val)) {
echo $val;
}
}
编辑:等等,您之前正在与"<br />"
连接,所以这不起作用。更好的解决方案:
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 /> ");
}
}
}
答案 2 :(得分:0)
function yes_it_is($val) {
if (is_array($val)) {
print_r($val);
//OR echo "<pre>"; print_r($val):
} else {
echo $val;
}
}
答案 3 :(得分:0)
is_array
应该这样做:
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 /> ");
}
}
}
否则会发生什么...您正在尝试将数组转换为字符串,并以字符串Array
形式出现。如果您事先进行检查以确保它确实是一个数组,那么您将不会收到该错误。我还建议您打开错误报告,并阅读manual for arrays。