fork download
  1. <?php
  2.  
  3. function get(array $array, $keys) {
  4. $val = $array;
  5. foreach (explode('/', $keys) as $part) {
  6. if (!isset($val[$part])) {
  7. return null;
  8. }
  9. $val = $val[$part];
  10. }
  11. return $val;
  12. }
  13.  
  14. function set(array &$array, $keys, $value) {
  15. $val = &$array;
  16. foreach (explode('/', $keys) as $part) {
  17. if (!isset($val[$part])) {
  18. $val[$part] = array();
  19. }
  20. $val = &$val[$part];
  21. }
  22. $val = $value;
  23. }
  24.  
  25. $array['foo']['bar']['baz'] = 'something';
  26. var_dump($array);
  27. var_dump(get($array, 'foo/bar/baz'));
  28.  
  29. set($array, 'foo/bar/baz', 'something else');
  30. var_dump($array);
  31.  
  32. set($array, 'foo/bar/bar', 'something new');
  33. var_dump($array);
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
array(1) {
  ["foo"]=>
  array(1) {
    ["bar"]=>
    array(1) {
      ["baz"]=>
      string(9) "something"
    }
  }
}
string(9) "something"
array(1) {
  ["foo"]=>
  array(1) {
    ["bar"]=>
    array(1) {
      ["baz"]=>
      string(14) "something else"
    }
  }
}
array(1) {
  ["foo"]=>
  array(1) {
    ["bar"]=>
    array(2) {
      ["baz"]=>
      string(14) "something else"
      ["bar"]=>
      string(13) "something new"
    }
  }
}