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():?给出了一个示例,如果您必须使用
开关
,则只需将其置于适当的开关条件下即可。