bayfrontmedia/php-array-helpers

提供有用数组函数的辅助类。

v2.0.1 2023-02-03 19:15 UTC

This package is auto-updated.

Last update: 2024-08-30 01:12:26 UTC


README

PHP 辅助类,提供有用的数组函数。

许可证

该项目是开源的,可在 MIT 许可证 下使用。

作者

Bayfront Media

需求

  • PHP ^8.0

安装

composer require bayfrontmedia/php-array-helpers

用法

描述

将多维数组转换为单深度 "点" 符号数组,可选地在每个数组键前添加一个字符串。

键值永远不会是数组,即使为空。空数组将被删除。

参数

  • $array (数组): 原始数组
  • $prepend = '' (字符串): 要添加的前缀字符串

返回

  • (数组)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'name' => [
        'first_name' => 'John',
        'last_name' => 'Doe'
    ],
    'hobbies' => [ // This empty array will be dropped

    ]
];

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

下划线

描述

将 "点" 表示法中的数组转换为标准的多维数组。

参数

  • $array (数组): "点" 表示法中的数组

返回

  • (数组)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'name.first_name' => 'John',
    'name.last_name' => 'Doe'
];

$undot = Arr::undot($array);

设置

描述

使用 "点" 表示法设置数组项的值。

参数

  • $array (数组): 原始数组
  • $key (字符串): 要设置的 "点" 表示法键
  • $value (混合类型): 键的值

返回

  • (void)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'name' => [
        'first_name' => 'John',
        'last_name' => 'Doe'
    ],
];

Arr::set($array, 'name.middle_name', 'Middle');

存在

描述

使用 "点" 表示法检查数组键是否存在且不为空。

参数

  • $array (数组): 原始数组
  • $key (字符串): 要检查的 "点" 表示法键

返回

  • (布尔类型)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'name' => [
        'first_name' => 'John',
        'last_name' => 'Doe'
    ],
];

if (Arr::has($array, 'name.first_name')) {
    // Do something
}

获取

描述

使用 "点" 表示法从数组中获取项,如果未找到则返回可选的默认值。

参数

  • $array (数组): 原始数组
  • $key (字符串): 要返回的 "点" 表示法键
  • $default = NULL (混合类型): 要返回的默认值

返回

  • (混合类型)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'name' => [
        'first_name' => 'John',
        'last_name' => 'Doe'
    ],
];

echo Arr::get($array, 'name.first_name');

摘取

描述

使用 "点" 表示法从数组中返回给定键的值数组。

参数

  • $array (数组): 原始数组
  • $value (字符串): 要返回的 "点" 表示法值
  • $key = NULL (字符串|NULL): 可选地如何以 "点" 表示法键返回数组

返回

  • (数组)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    [
        'user_id' => 110,
        'username' => 'John',
        'active' => true
    ],
    [
        'user_id' => 111,
        'username' => 'Jane',
        'active' => true
    ]
];

$array = Arr::pluck($array, 'username', 'user_id');

忘记

描述

使用 "点" 表示法从给定数组中删除单个键或键数组。

参数

  • $array (数组): 原始数组
  • $keys (字符串|数组): 要忘记的 "点" 表示法键

返回

  • (void)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'name' => [
        'first_name' => 'John',
        'last_name' => 'Doe'
    ],
];

Arr::forget($array, 'name.last_name');

除了

描述

返回除给定键外的原始数组。

参数

  • $array (数组): 原始数组
  • $keys (字符串|数组): 要删除的键

返回

  • (数组)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'user_id' => 110,
    'username' => 'John',
    'active' => true
];

$array = Arr::except($array, 'active');

只有

描述

从数组中返回所需的键。

参数

  • $array (数组): 原始数组
  • $keys (字符串|数组): 要返回的键

返回

  • (数组)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'user_id' => 110,
    'username' => 'John',
    'active' => true
];

$array = Arr::only($array, 'username');

缺少

描述

返回原始数组中缺少的键数组,如果没有缺少的键,则返回空数组。

参数

  • $array (数组): 原始数组
  • $keys (数组): 要检查的键

返回

  • (数组)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'user_id' => 110,
    'username' => 'John',
    'active' => true
];

$missing = Arr::missing($array, [
    'active',
    'last_login'
]);

isMissing

描述

检查原始数组中是否存在缺少的键。

参数

  • $array (数组): 原始数组
  • $keys (数组): 要检查的键

返回

  • (布尔类型)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'user_id' => 110,
    'username' => 'John',
    'active' => true
];

if (Arr::isMissing($array, [
    'active',
    'last_login'
])) {
    // Do something
}

multisort

描述

按给定键按升序(可选,降序)对多维数组进行排序。

参数

  • $array (数组): 原始数组
  • $key (字符串): 要排序的键名
  • $descending = false (布尔类型): 降序排序

返回

  • (数组)

示例

use Bayfront\ArrayHelpers\Arr;

$clients = [
    [
        'first_name' => 'John',
        'last_name' => 'Doe'
    ],
    [
        'first_name' => 'Jane',
        'last_name' => 'Doe'
    ]
];

$sorted = Arr::multisort($clients, 'first_name');

renameKeys

描述

在保留顺序的同时重命名数组键。

参数

  • $array (数组): 原始数组
  • $keys (数组): 要重命名的键/值对

返回

  • (数组)

示例

use Bayfront\ArrayHelpers\Arr;

$user = [
    'UserID' => 5,
    'UserEmail' => 'name@example.com',
    'UserGroup' => 'Administrator'
];

$renamed = Arr::renameKeys($user, [
    'UserID' => 'id',
    'UserEmail' => 'email',
    'UserGroup' => 'group'
]);

order

描述

根据键数组对数组进行排序。

如果 $order 数组中的键在原始数组中不存在,则忽略它们。

参数

  • $array (数组): 原始数组
  • $order (数组): 要返回的键的顺序数组

返回

  • (数组)

示例

use Bayfront\ArrayHelpers\Arr;

$address = [
    'street' => '123 Main St.',
    'state' => 'IL',
    'zip' => '60007',
    'city' => 'Chicago'
];

$order = [
    'street',
    'city',
    'state',
    'zip',
    'country'
];

$address = Arr::order($address, $order);

上面的示例将返回以下数组

Array
(
    [street] => 123 Main St.
    [city] => Chicago
    [state] => IL
    [zip] => 60007
)

query

描述

将数组转换为查询字符串。

参数

  • $array (数组): 原始数组

返回

  • (字符串)

示例

use Bayfront\ArrayHelpers\Arr;

$array = [
    'first_name' => 'Jane',
    'last_name' => 'Doe'
];

echo Arr::query($array);

getAnyValues

描述

返回一个包含给定数组中存在的值的数组。

参数

  • $array (数组)
  • $values (数组)

返回

  • (数组)

示例

$array = [
    'name' => [
        'John',
        'Dave'
    ],
];

$existing_values = Arr::getAnyValues($array['name'], [
    'John',
    'Jane'
]);

hasAnyValues

描述

给定数组中是否存在任何值。

参数

  • $array (数组)
  • $values (数组)

返回

  • (布尔类型)

示例

$array = [
    'name' => [
        'John',
        'Dave'
    ],
];

if (Arr::hasAnyValues($array['name'], [
    'John',
    'Jane'
])) { 
     // Do something
}

hasAllValues

描述

给定数组中是否存在所有值。

参数

  • $array (数组)
  • $values (数组)

返回

  • (布尔类型)

示例

$array = [
    'name' => [
        'John',
        'Dave'
    ],
];

if (Arr::hasAllValues($array['name'], [
    'John',
    'Jane'
])) { 
     // Do something
}