我有一个数组
Array (
[members] => Array (
[name] => longtext
[datum] => date
[more] => Array (
[0] => a
[1] => b
)
)
[viewable] => 1
[hierarchical] => 1
)
当我尝试循环子阵列$ array [' members']
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);
}
结果是正确的。有人可以解释一下吗?我还尝试将数组的一个成员更改为另一种类型,因为我知道php会在数组中合并相同的membertypes但它不会。
迎接
答案 0 :(得分:1)
您收到该错误的原因是您break;
上没有case
。
在第三个数组元素上,它转到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;
}
}
Doc:switch
答案 1 :(得分:1)
你需要在每个案件中都有一个休息陈述 - 否则你会失败:
foreach( $array['members'] as $k => $v) {
switch( gettype( $v ) ) {
case "boolean":
echo "boolean";
break;
case "array":
echo "array";
break;
case "string":
echo "string";
break;
}
}