What are the differences between echo and print in PHP?
- Both statements
printandechoare used to output/print data on the screen. - The
echostatement does not return any value whereasprintalways returns an integer value (1). - The
echoaccepts multiple arguments whereasprintonly accepts a single argument. - Both
echoandprintstatements can be used with or without parentheses().
During development, the developer needs to go through loops to prepare a single dimensional array out of a multi-dimensional array.
Laravel provides many helpers which come handy in multiple ways and saves developers work.
One of such is Arr::flatten() which flattens a multi-dimensional array into a single level by default.
Tested with Laravel versions 5.8, 6 and 7.
We need to import Illuminate\Support\Arr namespace with use keyword.
Kindly check for your version on the official DOC for Laravel Helper Arr::flatten(). This link will take you to Laravel 7 Documentation.
Syntax
Arr::flatten(array $array, [int $depth = INF])
Parameters
$array (necessary)
- The first parameter is necessary and must be an array that needs to be flattened.
- Laravel will extract elements and provides us with a new single dimension array based on the depth parameter.
$depth (optional)
- The second parameter specifies the depth and itโs an optional parameter.
- This value must be an integer type.
- The depth specifies how deep a nested array should be flattened.
- The default value for depth is infinity(
INF) from which Laravel will extract elements and provides us with a new single dimension array.
Return value
It returns a new 1-D flattened array.
Example
$data = [
'country' => 'India ๐ฎ๐ณ',
'languages' => [
'Gujarati',
'Hindi',
'Sanskrit',
'Tamil',
'Urdu',
],
];
dd(
Arr::flatten($data)
);
Output
array:3 [
0 => "India ๐ฎ๐ณ"
1 => "Gujarati"
2 => "Hindi"
3 => "Sanskrit"
4 => "Tamil"
5 => "Urdu"
]
Deeper Nested Arrays
This method also works on our specified level deep. We simply need to pass the appropriate depth parameter in order to flatten deeper multi-dimensional or nested arrays.
Example with 2 levels deep
$data = [[12, [2, 4], 124, 7, 10, 8, [15, [6, 7]]]];
dd(
Arr::flatten($data, 2)
);
Output for 2 levels deep
array:9 [
0 => 12
1 => 2
2 => 4
3 => 124
4 => 7
5 => 10
6 => 8
7 => 15
8 => array:2 [
0 => 6
1 => 7
]
]
Example with INF level deep
$data = [[12, [2, 4], 124, 7, 10, 8, [15, [6, 7]]]];
dd(
Arr::flatten($data, INF)
);
Output for INF level deep
array:10 [
0 => 12
1 => 2
2 => 4
3 => 124
4 => 7
5 => 10
6 => 8
7 => 15
8 => 6
9 => 7
]
Resources
Happy ๐ coding
With โค๏ธ from ๐ฎ๐ณ
Related Articles
Deepen your understanding with these curated continuations.
Unsigned Columns in Laravel Migrations
How to declare unsigned integer columns in Laravel migrations using unsignedBigInteger(), foreignId(), and the unsigned() modifier. Updated for Laravel 12.
Nested Eager Loading in Laravel Eloquent Explained
Reduce database queries in Laravel using nested eager loading. Learn the syntax, conditional loading, and how to optimize deeply related Eloquent models.
Check Your Laravel Version from the Command Line
How to check your Laravel version using php artisan --version, php artisan about, composer show, and app()->version(). Updated for Laravel 12 in 2026.