Parkour\Access::set PHP Method

set() public static method

Sets data at the given path.
See also: splitPath()
public static set ( array $data, array | string $path, mixed $value ) : mixed
$data array Data.
$path array | string Path.
$value mixed Value.
return mixed Updated data.
    public static function set(array $data, $path, $value)
    {
        $keys = self::splitPath($path);
        $current =& $data;
        foreach ($keys as $key) {
            if (!is_array($current)) {
                return $data;
            }
            if (!isset($current[$key])) {
                $current[$key] = [];
            }
            $current =& $current[$key];
        }
        $current = $value;
        return $data;
    }

Usage Example

 /**
  *
  */
 public function testSet()
 {
     $data = ['a' => 1, 'b' => ['c' => 2, 'd' => ['e' => 3]]];
     $expected = ['a' => 'a', 'b' => ['c' => 2, 'd' => ['e' => 'e'], 'f' => ['g' => 'g']]];
     $result = Access::set($data, 'a', 'a');
     $result = Access::set($result, 'b.d.e', 'e');
     $result = Access::set($result, 'b.f.g', 'g');
     $result = Access::set($result, 'a.z', 'z');
     $this->assertEquals($expected, $result);
 }