opxcore/array

The OpxCore array utils.

1.2.0 2020-12-23 20:48 UTC

This package is auto-updated.

Last update: 2024-03-29 03:50:33 UTC


README

Build Status Coverage Status Latest Stable Version Total Downloads License

Installing

composer require opxcore/array

Usage

Available methods:

For dot notation:

  • OpxCore\Arr\Arr::dot($array)
  • OpxCore\Arr\Arr::get($array, $key, $default)
  • OpxCore\Arr\Arr::set($array, $key, $value)
  • OpxCore\Arr\Arr::has($array, $keys)
  • OpxCore\Arr\Arr::forget($array, $keys)
  • OpxCore\Arr\Arr::pull($array, $key, $default)
  • OpxCore\Arr\Arr::push($array, $key, $value)

Regular arrays only:

  • OpxCore\Arr\Arr::only($array, $keys)
  • OpxCore\Arr\Arr::first($array, $callback, $default)
  • OpxCore\Arr\Arr::last($array, $callback, $default)

All $default values are optional and could be callable that returns value. By default, it is always null.

Performance tips: All methods for manipulating with dot notation are optimised for performance on a dot notated keys. If you are care about performance much it is better to use regular array manipulations on non-dot notated arrays.

Making a dot notated array

$dotNotated = Arr::dot($array);

Makes a dot notated array from any flat or multidimensional array.

    $array = ['level1' => ['level2' => 'value']];
    
    $result = Arr::dot($array);
    // $result === ['level1.level2' => 'value']

Getting a value using dot notation

OpxCore\Arr\Arr::get($array, $key, $default = null)

Gets a value from the array using dot notation. If the given key is not existing in the array, this function will return default value.

    use OpxCore\Arr\Arr;

    $array = ['level1' => ['level2' => 'value']];
    
    $result = Arr::get($array, 'level1.level2');
    // $result === 'value'

    $result = Arr::get($array, 'level1.level3');
    // $result === null

    $result = Arr::get($array, 'level1.level3', false);
    // $result === false

    $result = Arr::get($array, 'level1.level3', function(){return -1;});
    // $result === -1

Setting a value using dot notation

OpxCore\Arr\Arr::set($array, $key, $value): array

Sets the value into the array for the given key using dot notation. Function modifies given array directly, but also returns modified array for convenient usage.

    use OpxCore\Arr\Arr;
    
    $array = ['level1' => ['level2' => 'value']];
    
    $result = Arr::set($array, 'level1.level2_1', 'another value');
    // $result === ['level1' => ['level2' => 'value', 'level2_1' => 'another value']]
    // $array === $result

Determining a key (or keys) existence in the array

OpxCore\Arr\Arr::has($array, $keys)

Determines if the given key (or several keys) are existing in the array.

    use OpxCore\Arr\Arr;
    
    $array = ['level1' => ['level2' => 'value', 'level2_1' => 'another value']];
    
    $result = Arr::has($array, 'level1.level2');
    // $result === true
    
    $result = Arr::has($array, ['level1.level2', 'level1.level2_2']);
    // $result === false

Removing the values associated with the given keys

OpxCore\Arr\Arr::forget($array, $keys)

Removes the given key (or several keys given as an array) from the array. If any of keys are not existing in the array nothing happens. Function modifies given array directly, but also returns modified array for convenient usage.

    use OpxCore\Arr\Arr;
    
    $array = ['level1' => ['level2' => 'value', 'level2_1' => 'another value']];
    
    $result = Arr::forget($array, 'level1.level2');
    // $result === ['level1' => ['level2_1' => 'another value']]
    // $array === $result

Pulling the value from the array

OpxCore\Arr\Arr::pull($array, $key, $default)

Actually, this is combination of Arr::get() and Arr::forget() methods. This method fetches the value and then removes it from the array. If the key is not exists in the array, default value will be returned.

    use OpxCore\Arr\Arr;
    
    $array = ['level1' => ['level2' => 'value', 'level2_1' => 'another value']];
    
    $result = Arr::pull($array, 'level1.level2');
    // $result === 'value' 
    // $array === ['level1' => ['level2_1' => 'another value']]

Pushing the value into the array

OpxCore\Arr\Arr::push($array, $key, $value)

Pushes the value into the given key in array. If given key is not existing, it will be created and the value will be set as item of unassociated array. If the key is existing, value associated with this key will be casted as array and value will be added into it. Function modifies given array directly, but also returns modified array for convenient usage.

        use OpxCore\Arr\Arr;
        
        $array = ['level1' => ['level2' => 'value']];
        
        $result = Arr::push($array, 'level1.level2', 'another value');
        // $result === ['level1' => ['level2' => ['value', 'another value']]] 
        // $array === $result