Debug School

rakesh kumar
rakesh kumar

Posted on

Explain Arrays & Objects Laravel Methods

  1. Arr::accessible(given value is array accessible)
  2. Arr::add
  3. Arr::collapse( an array of arrays into a single array:)
  4. Arr::crossJoin(Cartesian product with all possible permutations)
  5. Arr::divide(How to get the keys and values )
  6. Arr::dot
  7. Arr::except(removes the given key / value pairs from an array)
  8. Arr::exists(given key exists in the provided array)
  9. Arr::first(first element of an array)
  10. Arr::flatten(multi-dimensional array into a single level array)
  11. Arr::forget
  12. Arr::get(retrieves a value from a deeply nested array)
  13. Arr::has(given item or items exists in an array using "dot" notation)
  14. Arr::hasAny(whether any item in a given set exists in an array)
  15. Arr::isAssoc
  16. Arr::isList
  17. Arr::join(convert string for the final element of the array then seprate with comma)
  18. Arr::keyBy
  19. Arr::last(last element of an array)
  20. Arr::map(work as for loop)
  21. Arr::only(only the specified key / value pairs)
  22. Arr::pluck(retrieves all of the values for a given key )
  23. Arr::prepend(push an item onto the beginning of an array)
  24. Arr::prependKeysWith
  25. Arr::pull(removes a key / value pair from an array)
  26. Arr::query(converts the array into a query string)
  27. Arr::random
  28. Arr::set( deeply nested array)
  29. Arr::shuffle(randomly shuffles the items in the array)
  30. Arr::sort(sorts an array by its values:)
  31. Arr::sortRecursive
  32. Arr::toCssClasses
  33. Arr::undot
  34. Arr::where
  35. Arr::whereNotNull(removes all null values from the given array)
  36. Arr::wrap(wraps the given value or string in an array)
  37. data_fill
  38. data_get(retrieves a value from a nested array)
  39. data_set(sets a value within a nested array )
  40. head(returns the first element in the given array)
  41. last(last element in the given array)

Important used Array Methods
Arr::exists
Arr::except
Arr::accessible
Arr::add
Arr::collapse
Arr::divide
Arr::first
Arr::has
Arr::hasAny
Arr::join
Arr::last
Arr::map
Arr::only
Arr::pluck
Arr::prepend
Arr::query
Arr::pull
Arr::shuffle
Arr::sort
Arr::where
Arr::whereNotNull()
Arr::wrap()
head
last
data_get
data_set

Arrays & Objects
Arr::accessible()
The Arr::accessible method determines if the given value is array accessible:

use Illuminate\Support\Arr;
use Illuminate\Support\Collection;

$isAccessible = Arr::accessible(['a' => 1, 'b' => 2]);

// true

$isAccessible = Arr::accessible(new Collection);

// true

$isAccessible = Arr::accessible('abc');

// false

$isAccessible = Arr::accessible(new stdClass);

// false
Enter fullscreen mode Exit fullscreen mode

Arr::add()
The Arr::add method adds a given key / value pair to an array if the given key doesn't already exist in the array or is set to null:

use Illuminate\Support\Arr;

$array = Arr::add(['name' => 'Desk'], 'price', 100);

// ['name' => 'Desk', 'price' => 100]

$array = Arr::add(['name' => 'Desk', 'price' => null], 'price', 100);

// ['name' => 'Desk', 'price' => 100]
Enter fullscreen mode Exit fullscreen mode

Arr::collapse()
The Arr::collapse method collapses an array of arrays into a single array:

use Illuminate\Support\Arr;

$array = Arr::collapse([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);

// [1, 2, 3, 4, 5, 6, 7, 8, 9]
Enter fullscreen mode Exit fullscreen mode

Arr::crossJoin()
The Arr::crossJoin method cross joins the given arrays, returning a Cartesian product with all possible permutations:

use Illuminate\Support\Arr;

$matrix = Arr::crossJoin([1, 2], ['a', 'b']);

/*
    [
        [1, 'a'],
        [1, 'b'],
        [2, 'a'],
        [2, 'b'],
    ]
*/

$matrix = Arr::crossJoin([1, 2], ['a', 'b'], ['I', 'II']);

/*
    [
        [1, 'a', 'I'],
        [1, 'a', 'II'],
        [1, 'b', 'I'],
        [1, 'b', 'II'],
        [2, 'a', 'I'],
        [2, 'a', 'II'],
        [2, 'b', 'I'],
        [2, 'b', 'II'],
    ]
*/
Enter fullscreen mode Exit fullscreen mode

Arr::divide()
The Arr::divide method returns two arrays: one containing the keys and the other containing the values of the given array:

use Illuminate\Support\Arr;

[$keys, $values] = Arr::divide(['name' => 'Desk']);

// $keys: ['name']

// $values: ['Desk']
Enter fullscreen mode Exit fullscreen mode

Arr::dot()
The Arr::dot method flattens a multi-dimensional array into a single level array that uses "dot" notation to indicate depth:

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];

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

// ['products.desk.price' => 100]
Enter fullscreen mode Exit fullscreen mode

Arr::except()
The Arr::except method removes the given key / value pairs from an array:

use Illuminate\Support\Arr;

$array = ['name' => 'Desk', 'price' => 100];

$filtered = Arr::except($array, ['price']);

// ['name' => 'Desk']
Enter fullscreen mode Exit fullscreen mode

Arr::exists()
The Arr::exists method checks that the given key exists in the provided array:

use Illuminate\Support\Arr;

$array = ['name' => 'John Doe', 'age' => 17];

$exists = Arr::exists($array, 'name');

// true

$exists = Arr::exists($array, 'salary');

// false
Enter fullscreen mode Exit fullscreen mode

Arr::first()
The Arr::first method returns the first element of an array passing a given truth test:

use Illuminate\Support\Arr;

$array = [100, 200, 300];

$first = Arr::first($array, function ($value, $key) {
    return $value >= 150;
});

// 200
Enter fullscreen mode Exit fullscreen mode

A default value may also be passed as the third parameter to the method. This value will be returned if no value passes the truth test:

use Illuminate\Support\Arr;

$first = Arr::first($array, $callback, $default);
Enter fullscreen mode Exit fullscreen mode

Arr::flatten()
The Arr::flatten method flattens a multi-dimensional array into a single level array:

use Illuminate\Support\Arr;

$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];

$flattened = Arr::flatten($array);

// ['Joe', 'PHP', 'Ruby']
Enter fullscreen mode Exit fullscreen mode

Arr::forget()
The Arr::forget method removes a given key / value pair from a deeply nested array using "dot" notation:

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];

Arr::forget($array, 'products.desk');

// ['products' => []]
Enter fullscreen mode Exit fullscreen mode

Arr::get()
The Arr::get method retrieves a value from a deeply nested array using "dot" notation:

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];

$price = Arr::get($array, 'products.desk.price');

// 100
Enter fullscreen mode Exit fullscreen mode

The Arr::get method also accepts a default value, which will be returned if the specified key is not present in the array:

use Illuminate\Support\Arr;

$discount = Arr::get($array, 'products.desk.discount', 0);

// 0
Enter fullscreen mode Exit fullscreen mode

Arr::has()
The Arr::has method checks whether a given item or items exists in an array using "dot" notation:

use Illuminate\Support\Arr;

$array = ['product' => ['name' => 'Desk', 'price' => 100]];

$contains = Arr::has($array, 'product.name');

// true

$contains = Arr::has($array, ['product.price', 'product.discount']);

// false
Enter fullscreen mode Exit fullscreen mode

Arr::hasAny()
The Arr::hasAny method checks whether any item in a given set exists in an array using "dot" notation:

use Illuminate\Support\Arr;

$array = ['product' => ['name' => 'Desk', 'price' => 100]];

$contains = Arr::hasAny($array, 'product.name');

// true

$contains = Arr::hasAny($array, ['product.name', 'product.discount']);

// true

$contains = Arr::hasAny($array, ['category', 'product.discount']);

// false
Enter fullscreen mode Exit fullscreen mode

Arr::isAssoc()
The Arr::isAssoc method returns true if the given array is an associative array. An array is considered "associative" if it doesn't have sequential numerical keys beginning with zero:

use Illuminate\Support\Arr;

$isAssoc = Arr::isAssoc(['product' => ['name' => 'Desk', 'price' => 100]]);

// true

$isAssoc = Arr::isAssoc([1, 2, 3]);

// false
Enter fullscreen mode Exit fullscreen mode

Arr::isList()
The Arr::isList method returns true if the given array's keys are sequential integers beginning from zero:

use Illuminate\Support\Arr;

$isList = Arr::isList(['foo', 'bar', 'baz']);

// true

$isList = Arr::isList(['product' => ['name' => 'Desk', 'price' => 100]]);

// false
Enter fullscreen mode Exit fullscreen mode

Arr::join()
The Arr::join method joins array elements with a string. Using this method's second argument, you may also specify the joining string for the final element of the array:

use Illuminate\Support\Arr;

$array = ['Tailwind', 'Alpine', 'Laravel', 'Livewire'];

$joined = Arr::join($array, ', ');

// Tailwind, Alpine, Laravel, Livewire

$joined = Arr::join($array, ', ', ' and ');

// Tailwind, Alpine, Laravel and Livewire
Enter fullscreen mode Exit fullscreen mode

Arr::keyBy()
The Arr::keyBy method keys the array by the given key. If multiple items have the same key, only the last one will appear in the new array:

use Illuminate\Support\Arr;

$array = [
    ['product_id' => 'prod-100', 'name' => 'Desk'],
    ['product_id' => 'prod-200', 'name' => 'Chair'],
];

$keyed = Arr::keyBy($array, 'product_id');

/*
    [
        'prod-100' => ['product_id' => 'prod-100', 'name' => 'Desk'],
        'prod-200' => ['product_id' => 'prod-200', 'name' => 'Chair'],
    ]
*/
Enter fullscreen mode Exit fullscreen mode

Arr::last()
The Arr::last method returns the last element of an array passing a given truth test:

use Illuminate\Support\Arr;

$array = [100, 200, 300, 110];

$last = Arr::last($array, function ($value, $key) {
    return $value >= 150;
});

// 300
Enter fullscreen mode Exit fullscreen mode

A default value may be passed as the third argument to the method. This value will be returned if no value passes the truth test:

use Illuminate\Support\Arr;

$last = Arr::last($array, $callback, $default);
Enter fullscreen mode Exit fullscreen mode

Arr::map()
The Arr::map method iterates through the array and passes each value and key to the given callback. The array value is replaced by the value returned by the callback:

use Illuminate\Support\Arr;

$array = ['first' => 'james', 'last' => 'kirk'];

$mapped = Arr::map($array, function ($value, $key) {
    return ucfirst($value);
});

// ['first' => 'James', 'last' => 'Kirk']
Enter fullscreen mode Exit fullscreen mode

Arr::only()
The Arr::only method returns only the specified key / value pairs from the given array:

use Illuminate\Support\Arr;

$array = ['name' => 'Desk', 'price' => 100, 'orders' => 10];

$slice = Arr::only($array, ['name', 'price']);

// ['name' => 'Desk', 'price' => 100]
Enter fullscreen mode Exit fullscreen mode

Arr::pluck()
The Arr::pluck method retrieves all of the values for a given key from an array:

use Illuminate\Support\Arr;

$array = [
    ['developer' => ['id' => 1, 'name' => 'Taylor']],
    ['developer' => ['id' => 2, 'name' => 'Abigail']],
];

$names = Arr::pluck($array, 'developer.name');

// ['Taylor', 'Abigail']
Enter fullscreen mode Exit fullscreen mode

You may also specify how you wish the resulting list to be keyed:

use Illuminate\Support\Arr;

$names = Arr::pluck($array, 'developer.name', 'developer.id');

// [1 => 'Taylor', 2 => 'Abigail']
Enter fullscreen mode Exit fullscreen mode

Arr::prepend()
The Arr::prepend method will push an item onto the beginning of an array:

use Illuminate\Support\Arr;

$array = ['one', 'two', 'three', 'four'];

$array = Arr::prepend($array, 'zero');

// ['zero', 'one', 'two', 'three', 'four']
Enter fullscreen mode Exit fullscreen mode

If needed, you may specify the key that should be used for the value:

use Illuminate\Support\Arr;

$array = ['price' => 100];

$array = Arr::prepend($array, 'Desk', 'name');

// ['name' => 'Desk', 'price' => 100]
Enter fullscreen mode Exit fullscreen mode

Arr::prependKeysWith()
The Arr::prependKeysWith prepends all key names of an associative array with the given prefix:

use Illuminate\Support\Arr;

$array = [
    'name' => 'Desk',
    'price' => 100,
];

$keyed = Arr::prependKeysWith($array, 'product.');

/*
    [
        'product.name' => 'Desk',
        'product.price' => 100,
    ]
*/
Enter fullscreen mode Exit fullscreen mode

Arr::pull()
The Arr::pull method returns and removes a key / value pair from an array:

use Illuminate\Support\Arr;

$array = ['name' => 'Desk', 'price' => 100];

$name = Arr::pull($array, 'name');

// $name: Desk

// $array: ['price' => 100]
Enter fullscreen mode Exit fullscreen mode

A default value may be passed as the third argument to the method. This value will be returned if the key doesn't exist:

use Illuminate\Support\Arr;

$value = Arr::pull($array, $key, $default);
Enter fullscreen mode Exit fullscreen mode

Arr::query()
The Arr::query method converts the array into a query string:

use Illuminate\Support\Arr;

$array = [
    'name' => 'Taylor',
    'order' => [
        'column' => 'created_at',
        'direction' => 'desc'
    ]
];
Enter fullscreen mode Exit fullscreen mode

Arr::query($array);

// name=Taylor&order[column]=created_at&order[direction]=desc
Enter fullscreen mode Exit fullscreen mode

Arr::random()
The Arr::random method returns a random value from an array:

use Illuminate\Support\Arr;

$array = [1, 2, 3, 4, 5];

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

// 4 - (retrieved randomly)
Enter fullscreen mode Exit fullscreen mode

You may also specify the number of items to return as an optional second argument. Note that providing this argument will return an array even if only one item is desired:

use Illuminate\Support\Arr;

$items = Arr::random($array, 2);

// [2, 5] - (retrieved randomly)
Enter fullscreen mode Exit fullscreen mode

Arr::set()
The Arr::set method sets a value within a deeply nested array using "dot" notation:

use Illuminate\Support\Arr;

$array = ['products' => ['desk' => ['price' => 100]]];

Arr::set($array, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 200]]]
Enter fullscreen mode Exit fullscreen mode

Arr::shuffle()
The Arr::shuffle method randomly shuffles the items in the array:

use Illuminate\Support\Arr;

$array = Arr::shuffle([1, 2, 3, 4, 5]);

// [3, 2, 5, 1, 4] - (generated randomly)
Enter fullscreen mode Exit fullscreen mode

Arr::sort()
The Arr::sort method sorts an array by its values:

use Illuminate\Support\Arr;

$array = ['Desk', 'Table', 'Chair'];

$sorted = Arr::sort($array);

// ['Chair', 'Desk', 'Table']
Enter fullscreen mode Exit fullscreen mode

You may also sort the array by the results of a given closure:

use Illuminate\Support\Arr;

$array = [
    ['name' => 'Desk'],
    ['name' => 'Table'],
    ['name' => 'Chair'],
];

$sorted = array_values(Arr::sort($array, function ($value) {
    return $value['name'];
}));

/*
    [
        ['name' => 'Chair'],
        ['name' => 'Desk'],
        ['name' => 'Table'],
    ]
*/
Enter fullscreen mode Exit fullscreen mode

Arr::sortRecursive()
The Arr::sortRecursive method recursively sorts an array using the sort function for numerically indexed sub-arrays and the ksort function for associative sub-arrays:

use Illuminate\Support\Arr;

$array = [
    ['Roman', 'Taylor', 'Li'],
    ['PHP', 'Ruby', 'JavaScript'],
    ['one' => 1, 'two' => 2, 'three' => 3],
];

$sorted = Arr::sortRecursive($array);

/*
    [
        ['JavaScript', 'PHP', 'Ruby'],
        ['one' => 1, 'three' => 3, 'two' => 2],
        ['Li', 'Roman', 'Taylor'],
    ]
*/
Enter fullscreen mode Exit fullscreen mode

Arr::toCssClasses()
The Arr::toCssClasses conditionally compiles a CSS class string. The method accepts an array of classes where the array key contains the class or classes you wish to add, while the value is a boolean expression. If the array element has a numeric key, it will always be included in the rendered class list:

use Illuminate\Support\Arr;

$isActive = false;
$hasError = true;

$array = ['p-4', 'font-bold' => $isActive, 'bg-red' => $hasError];

$classes = Arr::toCssClasses($array);

/*
    'p-4 bg-red'
*/

Enter fullscreen mode Exit fullscreen mode

This method powers Laravel's functionality allowing merging classes with a Blade component's attribute bag as well as the @class Blade directive.

Arr::undot()
The Arr::undot method expands a single-dimensional array that uses "dot" notation into a multi-dimensional array:

use Illuminate\Support\Arr;

$array = [
    'user.name' => 'Kevin Malone',
    'user.occupation' => 'Accountant',
];

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

// ['user' => ['name' => 'Kevin Malone', 'occupation' => 'Accountant']]
Enter fullscreen mode Exit fullscreen mode

Arr::where()
The Arr::where method filters an array using the given closure:

use Illuminate\Support\Arr;

$array = [100, '200', 300, '400', 500];

$filtered = Arr::where($array, function ($value, $key) {
    return is_string($value);
});

// [1 => '200', 3 => '400']
Enter fullscreen mode Exit fullscreen mode

Arr::whereNotNull()
The Arr::whereNotNull method removes all null values from the given array:

use Illuminate\Support\Arr;

$array = [0, null];

$filtered = Arr::whereNotNull($array);

// [0 => 0]
Enter fullscreen mode Exit fullscreen mode

Arr::wrap()
The Arr::wrap method wraps the given value in an array. If the given value is already an array it will be returned without modification:

use Illuminate\Support\Arr;

$string = 'Laravel';

$array = Arr::wrap($string);

// ['Laravel']
Enter fullscreen mode Exit fullscreen mode

If the given value is null, an empty array will be returned:

use Illuminate\Support\Arr;

$array = Arr::wrap(null);

// []
Enter fullscreen mode Exit fullscreen mode

data_fill()
The data_fill function sets a missing value within a nested array or object using "dot" notation:

$data = ['products' => ['desk' => ['price' => 100]]];

data_fill($data, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 100]]]

data_fill($data, 'products.desk.discount', 10);

// ['products' => ['desk' => ['price' => 100, 'discount' => 10]]]
Enter fullscreen mode Exit fullscreen mode

This function also accepts asterisks as wildcards and will fill the target accordingly:

$data = [
    'products' => [
        ['name' => 'Desk 1', 'price' => 100],
        ['name' => 'Desk 2'],
    ],
];

data_fill($data, 'products.*.price', 200);

/*
    [
        'products' => [
            ['name' => 'Desk 1', 'price' => 100],
            ['name' => 'Desk 2', 'price' => 200],
        ],
    ]
*/
Enter fullscreen mode Exit fullscreen mode

data_get()
The data_get function retrieves a value from a nested array or object using "dot" notation:

$data = ['products' => ['desk' => ['price' => 100]]];

$price = data_get($data, 'products.desk.price');

// 100
Enter fullscreen mode Exit fullscreen mode

The data_get function also accepts a default value, which will be returned if the specified key is not found:

$discount = data_get($data, 'products.desk.discount', 0);

// 0
Enter fullscreen mode Exit fullscreen mode

The function also accepts wildcards using asterisks, which may target any key of the array or object:

$data = [
    'product-one' => ['name' => 'Desk 1', 'price' => 100],
    'product-two' => ['name' => 'Desk 2', 'price' => 150],
];

data_get($data, '*.name');

// ['Desk 1', 'Desk 2'];
Enter fullscreen mode Exit fullscreen mode

data_set()
The data_set function sets a value within a nested array or object using "dot" notation:

$data = ['products' => ['desk' => ['price' => 100]]];

data_set($data, 'products.desk.price', 200);

// ['products' => ['desk' => ['price' => 200]]]
Enter fullscreen mode Exit fullscreen mode

This function also accepts wildcards using asterisks and will set values on the target accordingly:

$data = [
    'products' => [
        ['name' => 'Desk 1', 'price' => 100],
        ['name' => 'Desk 2', 'price' => 150],
    ],
];

data_set($data, 'products.*.price', 200);

/*
    [
        'products' => [
            ['name' => 'Desk 1', 'price' => 200],
            ['name' => 'Desk 2', 'price' => 200],
        ],
    ]
*/
Enter fullscreen mode Exit fullscreen mode

By default, any existing values are overwritten. If you wish to only set a value if it doesn't exist, you may pass false as the fourth argument to the function:

$data = ['products' => ['desk' => ['price' => 100]]];

data_set($data, 'products.desk.price', 200, $overwrite = false);

// ['products' => ['desk' => ['price' => 100]]]
Enter fullscreen mode Exit fullscreen mode

head()
The head function returns the first element in the given array:

$array = [100, 200, 300];

$first = head($array);
Enter fullscreen mode Exit fullscreen mode

// 100

last()
The last function returns the last element in the given array:

$array = [100, 200, 300];

$last = last($array);
Enter fullscreen mode Exit fullscreen mode

// 300

Top comments (0)