解析多维,混合数组

时间:2014-08-11 13:25:26

标签: php multidimensional-array

我有以下数组(深度未知):

array(2) {
  ["index"]=>
  object(stdClass)#17 (11) {
    ["desc"]=>
    string(11) "home"
    ["headline"]=>
    string(8) "products"
    ["teaser"]=>
    array(2) {
      [0]=>
      object(stdClass)#18 (1) {
        ["sys"]=>
        object(stdClass)#19 (3) {
          ["id"]=>
          string(22) "EQhfcEesaqn4N7L"
        }
      }
      [1]=>
      object(stdClass)#20 (1) {
        ["sys"]=>
        object(stdClass)#21 (3) {
          ["id"]=>
          string(21) "egJ3xDTeyq8aKtK"
        }
      }
    }
    ["label1"]=>
    object(stdClass)#28 (1) {
      ["sys"]=>
      object(stdClass)#29 (3) {
        ["id"]=>
        string(22) "cwfyDB3WPwU4son"
      }
    }
    ["metaDescription"]=>
    string(127) "Vestibulum Pharetra Bibendum Inceptos Quam"
    ["metaKeywords"]=>
    string(10) "Vestibulum Pharetra Bibendum Inceptos Quam"
    ["metaTitle"]=>
    string(51) "Lorem Ipsum"
  }
  [...]
}

所有“sys”对象都需要被另一个数组替换。

因此,如果我知道数组的最大深度,我可以做类似(伪代码)的事情:

foreach($array as $entry) {
  if(property_exists($entry, 'sys')) {
    // do stuff
  } else {
    foreach($entry as $sub) {
      if(property_exists($sub, 'sys')) {
        // do stuff
      }
    }
  }
}

但是因为每个对象都可以有任意数量的后代,我想我需要一个递归函数。

如何递归解析此数组并将sys-objects替换为另一个对象?

0 个答案:

没有答案