Php 是否可以检查开关中的值是否为对象?
我有一些类似这样的数组:Php 是否可以检查开关中的值是否为对象?,php,object,switch-statement,Php,Object,Switch Statement,我有一些类似这样的数组: $array = array( 'one' => 'value_one', 'two' => 'value_two', 'three' => 'value_three', 'four' => array( '1' => 'one', '2' => 'two' ) ); switch($value) { case 'value_one':
$array = array(
'one' => 'value_one',
'two' => 'value_two',
'three' => 'value_three',
'four' => array(
'1' => 'one',
'2' => 'two'
)
);
switch($value)
{
case 'value_one':
// some code;
break;
case 'value_two':
// some code;
break;
case 'value_three':
// some code;
break;
default:
if(is_array($value)) {
//some code for array here...
}
}
我在foreach循环中运行它,对于每个值,我运行其他代码
foreach($array as $key=>$value)
{
switch($value)
{
case 'value_one':
// some code;
break;
case 'value_two':
// some code;
break;
case 'value_three':
// some code;
break;
}
}
我想知道有没有办法检查最后一个是数组还是stdClass对象?
提前感谢。使用和 像这样
if (is_object($value)) {
// do something
} elseif (is_array($value)) {
// do something
} else {
// error
}
不直接。您可以找到方法将所有内容放入
switch
语句中,但实际上,这并没有实际意义,只会导致编写糟糕的代码
最好切换到if
语句:
if ($value === 'value_one') {
}
else if ($value === 'value_two') {
}
else if ($value === 'value_three') {
}
else if (is_array($value)) {
}
else if ($value instanceof stdClass) {
}
您可以像这样利用
默认值案例:
$array = array(
'one' => 'value_one',
'two' => 'value_two',
'three' => 'value_three',
'four' => array(
'1' => 'one',
'2' => 'two'
)
);
switch($value)
{
case 'value_one':
// some code;
break;
case 'value_two':
// some code;
break;
case 'value_three':
// some code;
break;
default:
if(is_array($value)) {
//some code for array here...
}
}
,,…您的意思是这样的:case is_object():?给出了一个示例,如果您必须使用开关
,则只需将其置于适当的开关条件下即可。