The data_set function sets a value within a nested array or object using "dot" notation:
$data = ['products' => ['desk' => ['price' => 100]]];

data_set($data'products.desk.price'200);
    function data_fill(&$target$key$value)

    {

        return 
data_set($target$key$valuefalse);

    }

}
            if ($segments) {

                foreach (
$target as &$inner) {

                    
data_set($inner$segments$value$overwrite);

                }

            } elseif (
$overwrite) {

                foreach (
$target as &$inner) {
                    $target[$segment] = [];

                }



                
data_set($target[$segment], $segments$value$overwrite);

            } elseif (
$overwrite || ! Arr::exists($target$segment)) {

                
$target[$segment] = $value;

            }
                    $target->{$segment} = [];

                }



                
data_set($target->{$segment}, $segments$value$overwrite);

            } elseif (
$overwrite || ! isset($target->{$segment})) {

                
$target->{$segment} = $value;

            }
            $target = [];



            if (
$segments) {

                
data_set($target[$segment], $segments$value$overwrite);

            } elseif (
$overwrite) {

                
$target[$segment] = $value;

            }
            return $data;

        }



        return 
data_set($data$attributenulltrue);

    }
        $this->assertEquals(

            [
'foo' => 'bar''baz' => 'boom'],

            
data_set($data'baz''boom')

        );



        
$this->assertEquals(
        $this->assertEquals(

            [
'foo' => 'bar''baz' => 'kaboom'],

            
data_set($data'baz''kaboom')

        );



        
$this->assertEquals(
        $this->assertEquals(

            [
'foo' => [], 'baz' => 'kaboom'],

            
data_set($data'foo.*''noop')

        );



        
$this->assertEquals(
        $this->assertEquals(

            [
'foo' => ['bar' => 'boom'], 'baz' => 'kaboom'],

            
data_set($data'foo.bar''boom')

        );



        
$this->assertEquals(
        $this->assertEquals(

            [
'foo' => ['bar' => 'boom'], 'baz' => ['bar' => 'boom']],

            
data_set($data'baz.bar''boom')

        );



        
$this->assertEquals(
        $this->assertEquals(

            [
'foo' => ['bar' => 'boom'], 'baz' => ['bar' => ['boom' => ['kaboom' => 'boom']]]],

            
data_set($data'baz.bar.boom.kaboom''boom')

        );

    }
        $this->assertEquals(

            [
'foo' => []],

            
data_set($data'foo.*.bar''noop')

        );



        
$this->assertEquals(
        $this->assertEquals(

            [
'foo' => [], 'bar' => [['baz' => 'original'], []]],

            
data_set($data'bar', [['baz' => 'original'], []])

        );



        
$this->assertEquals(
        $this->assertEquals(

            [
'foo' => [], 'bar' => [['baz' => 'boom'], ['baz' => 'boom']]],

            
data_set($data'bar.*.baz''boom')

        );



        
$this->assertEquals(