我有一个数组
Array (
[members] => Array (
[name] => longtext
[datum] => date
[more] => Array (
[0] => a
[1] => b
)
)
[viewable] => 1
[hierarchical] => 1
)
当我尝试循环子数组$array['成员']
foreach( $array['members'] as $k => $v) {
switch( gettype( $v ) ) {
case "boolean":
echo "boolean";
case "array":
echo "array";
case "string":
echo "string";
}
}
我希望输出像
string string array
相反,我得到了结果
string string array **string**
我不明白第 4 根弦是从哪里来的。
当我尝试时
foreach($array['members'] as $k => $v) {
echo gettype($v);
}
结果是正确的。有人可以解释一下吗?我还尝试将数组的一个成员更改为另一种类型,因为我 thougt php 会在数组中合并相同的成员类型,但它没有。
迎接
您收到该错误的原因是您的case
没有break;
。
在第三个数组元素上,它转到array
但由于没有中断,它也转到string
您的循环应该是这样的:
foreach( $array['members'] as $k => $v) {
switch( gettype( $v ) ) {
case "boolean":
echo "boolean";
break;
case "array":
echo "array";
break;
case "string":
echo "string";
break;
}
}
文档:开关
在每种情况下都需要一个中断语句 - 否则你会失败:
foreach( $array['members'] as $k => $v) {
switch( gettype( $v ) ) {
case "boolean":
echo "boolean";
break;
case "array":
echo "array";
break;
case "string":
echo "string";
break;
}
}