我有以下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 Chairs
2: Dishes Array
卫生间:0:毛巾
1:药品
2:淋浴凝胶阵列
卧室:床:腿:4
床单:羊毛
毯子:Winter: Thick
Summer: Thin Array Array Array
人:只有我
我如何摆脱与其他值打印的'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 Chairs
2:盘子
卫生间:0:毛巾
1:药品
2:沐浴露卧室:床:腿:4
床单:羊毛
毯子:Winter: Thick
Summer: Thin Array Array
人:只有我
在Thin
Array
编辑3:对不起,我的错误,接受的结果工作完美。在测试时,我有两个函数一起命名为my_room
和my_room2
,在测试时,两个函数一起显示Array
,但是当我注释掉my_room2
并只显示my_room
函数时,它的答案是完美的。很抱歉造成任何混淆,我正在一起测试两个函数,输出很奇怪。
标:
根据下面的答案,我把它改成了好看的一行三元操作符,比如: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 /> ");
}
}
将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 /> ");
}
}
如果你只想忽略传递给函数的数组:
function yes_it_is($val) {
if (!is_array($val)) {
echo $val;
}
}
Edit:等等,您之前正在与"<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 /> ");
}
}
}
function yes_it_is($val) {
if (is_array($val)) {
print_r($val);
//OR echo "<pre>"; print_r($val):
} else {
echo $val;
}
}
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
。如果您事先检查以确保它确实是一个数组,您就不会得到那个错误。我还建议您打开错误报告,并阅读数组手册。