PHP跳过数组stdClass中的迭代

时间:2015-09-10 02:41:39

标签: php arrays foreach stdclass

我通过使用以下代码组合数组和stdClass的大型数组成功迭代:

foreach ($arr as $A) {
        $THIS=$A->w->b;         
}

以下是我正在迭代的数组示例:

Array
(
     [0] => Array
         (
             [w] => stdClass Object
              (
                 [b] => THIS
         )
     [1] => Array
         (
             [w] => stdClass Object
              (
                 [b] => THIS
         )
     [2] => Array
         (
             [w] => stdClass Object
              (
                 [b] => THIS
         )
     [3] => Array
         (
             [z] => stdClass Object
              (
                 [whatever] => NOT THIS
         )
)

我需要从每个数组的THIS stdClass对象中检索[x]个值; [0][1][2],等等。但我不需要从[z]检索具有不同密钥的值。

因此,当运行上面的代码时,我成功检索到了所需的THIS值,但是在遍历不包含我想要的stdClass对象的数组时,我反复出错:

PHP Notice: Undefined property: stdClass::

最简单的方法是将迭代设置为跳过某些不需要的对象?或者如果没有所需的对象,将其设置为跳过?

1 个答案:

答案 0 :(得分:2)

最简单的方法是检查对象参数是否存在......

foreach ( $arr as $A )
{
  if( isset( $A['w'] ) )
  {
    $THIS = $A['w']->b;         
  }
}

编辑:您还可以查看更多条件

foreach ( $arr as $A )
{
  if( is_array( $A ) and isset( $A['w'] ) and is_object( $A['w'] ) and isset( $A['w']->b ) )
  {
    $THIS = $A['w']->b;         
  }
}