lablnet/arrays

PHP数组类,以高效方式操作数组,解决实际问题。

1.0 2019-05-22 08:16 UTC

This package is auto-updated.

Last update: 2024-09-22 20:12:33 UTC


README

注意 此包是ZEST框架的一部分(https://github.com/zestframework/Zest_Framework/blob/master/src/Data/Arrays.php),感谢@peter

在此不接受任何PR

一个用于以高效方式操作数组以解决实际问题的类。

要求

  1. PHP 7.2或更高版本。
  2. Composer。

安装

安装此包非常简单,首先确保您有正确的PHP版本和已安装的Composer,然后在您的终端/命令提示符下运行:composer require lablnet/arrays

功能

  1. 确定给定的dataSet是否确实是数组?

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $arr = array(2, 2, 3, 4, 4, 4, 4, 8, 8, 6, 6, 9, 9, 9, 9); 
        var_dump(Arrays::isReallyArray($arr)); //True
        var_dump(Arrays::isReallyArray([]));   //False
  2. 确定给定的数组是(序列)索引数组吗?

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $arr = array(2, 2, 3, 4, 4, 4, 4, 8, 8, 6, 6, 9, 9, 9, 9); 
        var_dump(Arrays::isSequential($arr)); //True
        var_dump(Arrays::isSequential(['a' => 1]));   //False
  3. 确定给定的数组是关联数组吗?

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $arr = array(2, 2, 3, 4, 4, 4, 4, 8, 8, 6, 6, 9, 9, 9, 9); 
        var_dump(Arrays::isAssoc($arr)); //False
        var_dump(Arrays::isAssoc(['a' => 1]));   //True
  4. 确定给定的数组是多维数组吗?

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $arr = array(2, 2, 3, 4, 4, 4, 4, 8, 8, 6, 6, 9, 9, 9, 9); 
        var_dump(Arrays::isMulti($arr)); //False
        var_dump(Arrays::isMulti(['a' => ['b' => 'c']]));   //True
  5. 获取数组的类型。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $arr = array(2, 2, 3, 4, 4, 4, 4, 8, 8, 6, 6, 9, 9, 9, 9); 
        var_dump(Arrays::getType($arr)); //indexes
        var_dump(Arrays::getType(['a' => ['b' => 'c']]));   //multi
  6. 如果不存在,则使用“操作”符号将元素添加到数组中。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        var_dump(Arrays::add(['name' => 'desk', 'price' => null], 'price', 100)); // ['name' => 'desk', 'price' => 100]
  7. 使用“操作”符号将数组项设置为给定的值。

    • 示例
    • use Lablnet\Arrays;
      require '../vendor/autoload.php';
      $array = ['products' => ['desk' => ['price' => 100]]];
      Arrays::set($array, 'products.desk.price', 200, '.');
      // ['products' => ['desk' => ['price' => 200]]]
  8. 使用“操作”符号从数组中获取项(Arrays::get方法使用“点”符号从深度嵌套的数组中检索值:)。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $array = ['products' => ['desk' => ['price' => 100]]];
        $price = Arrays::get($array, 'products.desk.price', '.');
        // 100

Arrays::get方法也接受一个默认值,如果未找到特定键,则返回该值。

  1. 使用“操作”符号确定数组中是否存在项或多个项。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $array = ['product' => ['name' => 'Desk', 'price' => 100]];
        $contains = Arrays::has($array, 'product.name', '.');
        // true
        $contains = Arrays::has($array, ['product.price', 'product.discount'], '.');
        // false
  2. 使用“操作”符号确定数组中是否存在项或多个项。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $array = ['product' => ['name' => 'Desk', 'price' => 100]];
        $assoc = Arrays::multiToAssoc($array);
        // ['name' => 'Desk', 'price' => 100]
  3. 使用点符号转换多维关联数组。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $array = ['products' => ['desk' => ['price' => 100]]];
        $dot= Arrays::dot($array);
        // ['products.desk.price' => 100]
  4. 使用操作符转换多维关联数组。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $array = ['products' => ['desk' => ['price' => 100]]];
        $dot = Arrays::multiToAssocWithSpecificOpr($array);
        // ['products.desk.price' => 100]
  5. 将项推送到数组的开始位置。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $array = ['red', 'green', 'blue'];
        $prepend = Arrays::prepend($array, 'yellow');
        // ['yellow', 'red', 'green', 'blue'];
  6. 将项推送到数组的末尾。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $array = ['red', 'green', 'blue'];
        $append = Arrays::append($array, 'yellow');
        // ['red', 'green', 'blue', 'yellow'];
  7. 从数组中获取唯一元素。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $array = ['red', 'green', 'blue', 'red'];
        $unique = Arrays::append($array);
        // ['red', green', 'blue'];
  8. 从给定的数组中获取项目子集。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $array =  [
            'users' => 
            [
                'id' => 1,
                'name' => "Alex",
                'username' => 'peter',
            ],
            [
                'id' => 2,
                'name' => "Peter Khot",
                'username' => 'peter',
            ],
            [
                'id' => 3,
                'name' => "John",
                'username' => 'test',
            ]
        ];
        $subSetOfArray = Arrays::subSetOfArray($array, 'name');
        // [];
  9. 使用“操作”符号从给定的数组中移除一个或多个数组项。

    • 示例
    •   use Lablnet\Arrays;
        require '../vendor/autoload.php';
        $array = ['products' => ['desk' => ['price' => 100]]];
        Arrays::forget($array, 'products.desk');
        // ['products' => []]
  10. 获取除了指定的键数组之外的所有给定数组。

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = ['name' => 'Desk', 'price' => 100]
       $filtered = Arrays::except($array, ['price']);
       // ['name' => 'Desk']
  11. 从数组中获取值并将其移除。

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = ['name' => 'Desk', 'price' => 100];
       $name = Arrays::pull($array, 'name');
       // $array: ['price' => 100]
  12. 更改数组中所有键的大小写。

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = ['name' => 'Desk', 'price' => 100];
       $name = Arrays::arrayChangeCaseKey($array, CASE_UPPER);
       // ['NAME' => 'Desk', 'PRICE' => 100]
  13. 更改数组中所有值的大小写。

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = ['name' => 'Alex'];
       $name = Arrays::arrayChangeCaseValue($array, CASE_UPPER);
       // ['name' => 'ALEX']
  14. 从数组中移除重复值。

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = ````
       $name = Arrays::removeDuplicates($array);
       // $array: ['red', 'green', 'blue']
  15. 从数组中获取最常出现的值。

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = ['red', 'blue', 'green', 'red', 'blue'];
       $name = Arrays::mostOccurring($array);
       // ['red', 'blue']
  16. 从数组中获取最不常出现的值。

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = ['red', 'blue', 'green', 'red', 'blue'];
       $name = Arrays::leastOccurring($array);
       // ['green']
  17. 将数组转换为查询字符串。

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = [
           'foo' => 'bar',
           'baz' => 'boom',
           'cow' => 'milk',
           'php' => 'hypertext processor'
       ];
       $name = Arrays::query($array);
       // foo=bar&baz=boom&cow=milk&php=hypertext+processor
  18. 使用给定的回调函数过滤数组(此功能与多维数组不兼容)。)

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = [100, '200', 300, '400', 500];
       $array = Arrays::where($array, function ($value, $key) {
           return is_string($value);
       });
       // [1 => '200', 3 => '400']
  19. 从数组中获取一个或多个随机值。

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = ['red', 'green', 'blue'];
       $name = Arrays::random($array);
       // ['blue'];
  20. 从多维数组中获取相同键的多个值。

    • 示例
    •  use Lablnet\Arrays;
       require '../vendor/autoload.php';
       $array = [
           ['developer' => ['id' => 1, 'name' => 'Alex']],
           ['developer' => ['id' => 2, 'name' => 'Peter']],
       ];
       $name = Arrays::pluck($array, 'name');
       // ['Alex', 'Peter'];