opxcore/array

OpxCore数组工具。

1.2.0 2020-12-23 20:48 UTC

This package is auto-updated.

Last update: 2024-09-29 05:02:19 UTC


README

Build Status Coverage Status Latest Stable Version Total Downloads License

安装

composer require opxcore/array

使用

可用方法

对于点表示法

  • 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)

仅限常规数组

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

所有 $default 值都是可选的,可以是返回值的 callable。默认情况下,始终为 null

性能提示:所有点表示法操作方法都针对点表示法键优化了性能。如果非常关注性能,最好在非点表示法数组上使用常规数组操作。

创建点表示法数组

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

将任何扁平或多维数组转换为点表示法数组。

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

使用点表示法获取值

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

使用点表示法从数组中获取值。如果给定的键不在数组中,此函数将返回默认值。

    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

使用点表示法设置值

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

使用点表示法将值设置到给定键的数组中。函数直接修改给定的数组,但也返回修改后的数组以方便使用。

    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

确定键(或键)在数组中的存在性

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

确定给定的键(或多个键)是否存在于数组中。

    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

删除与给定键关联的值

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

从数组中删除给定的键(或作为数组提供的多个键)从数组中。如果任何键不存在于数组中,则不执行任何操作。函数直接修改给定的数组,但也返回修改后的数组以方便使用。

    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

从数组中拉取值

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

实际上,这是 Arr::get()Arr::forget() 方法的组合。此方法获取值然后从数组中删除它。如果键不存在于数组中,将返回默认值。

    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']]

将值推入数组

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

将值推入数组的给定键中。如果给定的键不存在,它将被创建,并将值设置为未关联数组的项。如果键已存在,与该键关联的值将被转换为数组,并将值添加到其中。函数直接修改给定的数组,但也返回修改后的数组以方便使用。

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