是否可以在交换机中检查对象的值?

时间:2014-09-01 17:59:12

标签: php object switch-statement

我有一些像这样的数组:

$array = array(
    'one' => 'value_one',
    'two' => 'value_two',
    'three' => 'value_three',
    'four' => array(
        '1' => 'one',
        '2' => 'two'
    )
);

我在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对象?
提前谢谢。

3 个答案:

答案 0 :(得分:0)

使用is_object()is_array()

喜欢这样

if (is_object($value)) {
    // do something
} elseif (is_array($value)) {
    // do something
} else {
    // error
}

答案 1 :(得分:0)

不直接。您可以找到将所有内容拟合(嵌套)到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) {
}

答案 2 :(得分:0)

你可以利用这样的default案例:

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...
        }
}
相关问题