fork(1) download
  1. <?php
  2. $count = 4;
  3. $data = array(
  4. 'number' => rand(1,45),
  5. 'otherkey' => 'value',
  6. 'sub' => array(
  7. 'count' => $count,
  8. 'number' => rand(1,45),
  9. 'some' => 'thing',
  10. 'range' => range('a','g'),
  11. 'sub' => array(
  12. 'count' => ++$count,
  13. 'number' => rand(1,45),
  14. 'key' => 'value',
  15. 'date' => date_format(@date_create('now'), 'Y-m-d'),
  16. 'sub' => array(
  17. 'count' => --$count,
  18. 'number' => rand(1,45),
  19. 'key' => 'value',
  20. 'sub' => array(
  21. 'count' => pow(++$count, 3),
  22. 'number' => rand(1,45),
  23. 'key' => 'value',
  24. 'sub' => 'last'
  25. )
  26. )
  27. )
  28. )
  29. );
  30.  
  31.  
  32. //var_dump($data);
  33.  
  34.  
  35. $data = json_decode(json_encode($data));
  36.  
  37. $rai = new RecursiveArrayIterator($data);
  38. $rii = new RecursiveIteratorIterator($rai);
  39.  
  40. foreach ($rii as $idx => $level) {
  41. if($idx === 'number')
  42. {
  43. $str = ($level % 2) ? 'odd' : 'even';
  44. $rii->offsetSet('number_str', $str);
  45. //var_dump($level .' => ' . $str);
  46. }
  47. }
  48.  
  49.  
  50.  
  51. echo '<pre>';
  52. var_dump($rai);
  53. echo '</pre>';
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
<pre>object(RecursiveArrayIterator)#6 (1) {
  ["storage":"ArrayIterator":private]=>
  object(stdClass)#1 (4) {
    ["number"]=>
    int(6)
    ["otherkey"]=>
    string(5) "value"
    ["sub"]=>
    object(stdClass)#2 (6) {
      ["count"]=>
      int(4)
      ["number"]=>
      int(17)
      ["some"]=>
      string(5) "thing"
      ["range"]=>
      array(7) {
        [0]=>
        string(1) "a"
        [1]=>
        string(1) "b"
        [2]=>
        string(1) "c"
        [3]=>
        string(1) "d"
        [4]=>
        string(1) "e"
        [5]=>
        string(1) "f"
        [6]=>
        string(1) "g"
      }
      ["sub"]=>
      object(stdClass)#3 (6) {
        ["count"]=>
        int(5)
        ["number"]=>
        int(27)
        ["key"]=>
        string(5) "value"
        ["date"]=>
        string(10) "2013-07-25"
        ["sub"]=>
        object(stdClass)#4 (5) {
          ["count"]=>
          int(4)
          ["number"]=>
          int(23)
          ["key"]=>
          string(5) "value"
          ["sub"]=>
          object(stdClass)#5 (5) {
            ["count"]=>
            int(125)
            ["number"]=>
            int(11)
            ["key"]=>
            string(5) "value"
            ["sub"]=>
            string(4) "last"
            ["number_str"]=>
            string(3) "odd"
          }
          ["number_str"]=>
          string(3) "odd"
        }
        ["number_str"]=>
        string(3) "odd"
      }
      ["number_str"]=>
      string(3) "odd"
    }
    ["number_str"]=>
    string(4) "even"
  }
}
</pre>