将array_values应用于对象内的每个数组字段

时间:2014-06-27 17:01:40

标签: php arrays class

我有一个PHP stdClass对象。里面可以有很多字段,其中一些是数组。字段也可以是一个Object,它可以包含带有数组的字段。

想法是迭代对象并在找到数组时执行array_values操作。

可能的对象如下:

object(stdClass)#1 (3) {
["name"]=>
string(14) "I am an object"
["object"]=>
object(stdClass)#2 (3) {
  ["0"]=>
  string(6) "item 1"
  ["1"]=>
  string(6) "item 2"
  ["2"]=>
  array(3) {
    [0]=>
    string(3) "3.1"
    [1]=>
    string(3) "3.2"
    [2]=>
    string(3) "3.3"
  }
}
["list"]=>
array(3) {
  [0]=>
  string(6) "item 1"
  [1]=>
  string(6) "item 2"
  [2]=>
  string(6) "item 3"
}
}

关于如何递归遍历对象并将array_values应用于每个数组的任何想法?

1 个答案:

答案 0 :(得分:1)

我终于使用了这个功能。它正是我想要的。

function rec_array_values(&$item){
    if(is_object($item)){
        foreach ($item as $key => &$value) {
            $key = rec_array_values($value);
        }
    }else if(is_array($item)){
        foreach ($item as $key => &$value) {
            $key = rec_array_values($value);
        }
        $item = array_values($item);
    }
}