Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bayfrontmedia/php-array-helpers

PHP helper class to provide useful array functions.
https://github.com/bayfrontmedia/php-array-helpers

array function helper helpers php

Last synced: about 6 hours ago
JSON representation

PHP helper class to provide useful array functions.

Awesome Lists containing this project

README

        

## PHP array helpers

PHP helper class to provide useful array functions.

- [License](#license)
- [Author](#author)
- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)

## License

This project is open source and available under the [MIT License](LICENSE).

## Author

Bayfront Media

- [Bayfront Media homepage](https://www.bayfrontmedia.com?utm_source=github&utm_medium=direct)
- [Bayfront Media GitHub](https://github.com/bayfrontmedia)

## Requirements

* PHP `^8.0`

## Installation

```
composer require bayfrontmedia/php-array-helpers
```

## Usage

- [dot](#dot)
- [undot](#undot)
- [set](#set)
- [has](#has)
- [get](#get)
- [pluck](#pluck)
- [forget](#forget)
- [except](#except)
- [only](#only)
- [missing](#missing)
- [isMissing](#ismissing)
- [multisort](#multisort)
- [renameKeys](#renamekeys)
- [order](#order)
- [query](#query)
- [getAnyValues](#getanyvalues)
- [hasAnyValues](#hasanyvalues)
- [hasAllValues](#hasallvalues)


### dot

**Description:**

Converts a multidimensional array to a single depth "dot" notation array, optionally prepending a string to each array key.

The key values will never be an array, even if empty. Empty arrays will be dropped.

**Parameters:**

- `$array` (array): Original array
- `$prepend = ''` (string): String to prepend

**Returns:**

- (array)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

]
];

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


### undot

**Description:**

Converts array in "dot" notation to a standard multidimensional array.

**Parameters:**

- `$array` (array): Array in "dot" notation

**Returns:**

- (array)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

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


### set

**Description:**

Set an array item to a given value using "dot" notation.

**Parameters:**

- `$array` (array): Original array
- `$key` (string): Key to set in "dot" notation
- `$value` (mixed): Value of key

**Returns:**

- (void)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

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


### has

**Description:**

Checks if array key exists and not null using "dot" notation.

**Parameters:**

- `$array` (array): Original array
- `$key` (string): Key to check in "dot" notation

**Returns:**

- (bool)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

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


### get

**Description:**

Get an item from an array using "dot" notation, returning an optional default value if not found.

**Parameters:**

- `$array` (array): Original array
- `$key` (string): Key to return in "dot" notation
- `$default = NULL` (mixed): Default value to return

**Returns:**

- (mixed)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

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


### pluck

**Description:**

Returns an array of values for a given key from an array using "dot" notation.

**Parameters:**

- `$array` (array): Original array
- `$value` (string): Value to return in "dot" notation
- `$key = NULL` (string|null): Optionally how to key the returned array in "dot" notation

**Returns:**

- (array)

**Example:**

```
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');
```


### forget

**Description:**

Remove a single key, or an array of keys from a given array using "dot" notation.

**Parameters:**

- `$array` (array): Original array
- `$keys` (string|array): Key(s) to forget in "dot" notation

**Returns:**

- (void)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

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


### except

**Description:**

Returns the original array except given key(s).

**Parameters:**

- `$array` (array): Original array
- `$keys` (string|array): Key(s) to remove

**Returns:**

- (array)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

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


### only

**Description:**

Returns only desired key(s) from an array.

**Parameters:**

- `$array` (array): Original array
- `$keys` (string|array): Key(s) to return

**Returns:**

- (array)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

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


### missing

**Description:**

Returns array of missing keys from the original array, or an empty array if none are missing.

**Parameters:**

- `$array` (array): Original array
- `$keys` (array): Key(s) to check

**Returns:**

- (array)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

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


### isMissing

**Description:**

Checks if keys are missing from the original array.

**Parameters:**

- `$array` (array): Original array
- `$keys` (array): Key(s) to check

**Returns:**

- (bool)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

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


### multisort

**Description:**

Sort a multidimensional array by a given key in ascending (optionally, descending) order.

**Parameters:**

- `$array` (array): Original array
- `$key` (string): Key name to sort by
- `$descending = false` (bool): Sort descending

**Returns:**

- (array)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

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


### renameKeys

**Description:**

Rename array keys while preserving their order.

**Parameters:**

- `$array` (array): Original array
- `$keys` (array): Key/value pairs to rename

**Returns:**

- (array)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

$user = [
'UserID' => 5,
'UserEmail' => '[email protected]',
'UserGroup' => 'Administrator'
];

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


### order

**Description:**

Order an array based on an array of keys.

Keys from the `$order` array which do not exist in the original array will be ignored.

**Parameters:**

- `$array` (array): Original array
- `$order` (array): Array of keys in the order to be returned

**Returns:**

- (array)

**Example:**

```
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);
```

The above example will return the following array:

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


### query

**Description:**

Convert array into a query string.

**Parameters:**

- `$array` (array): Original array

**Returns:**

- (string)

**Example:**

```
use Bayfront\ArrayHelpers\Arr;

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

echo Arr::query($array);
```


### getAnyValues

**Description:**

Return an array of values which exist in a given array.

**Parameters:**

- `$array` (array)
- `$values` (array)

**Returns:**

- (array)

**Example:**

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

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


### hasAnyValues

**Description:**

Do any values exist in a given array.

**Parameters:**

- `$array` (array)
- `$values` (array)

**Returns:**

- (bool)

**Example:**

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

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


### hasAllValues

**Description:**

Do all values exist in a given array.

**Parameters:**

- `$array` (array)
- `$values` (array)

**Returns:**

- (bool)

**Example:**

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

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