How to convert array values to lowercase in PHP?
PhpArraysStringLowercasePhp Problem Overview
How can I convert all values in an array to lowercase in PHP?
Something like array_change_key_case
?
Php Solutions
Solution 1 - Php
use array_map()
:
$yourArray = array_map('strtolower', $yourArray);
In case you need to lowercase nested array (by Yahya Uddin):
$yourArray = array_map('nestedLowercase', $yourArray);
function nestedLowercase($value) {
if (is_array($value)) {
return array_map('nestedLowercase', $value);
}
return strtolower($value);
}
Solution 2 - Php
Just for completeness: you may also use array_walk
:
array_walk($yourArray, function(&$value)
{
$value = strtolower($value);
});
From PHP docs:
> If callback needs to be working with the actual values of the array, specify the first parameter of callback as a reference. Then, any changes made to those elements will be made in the original array itself.
Or directly via foreach
loop using references:
foreach($yourArray as &$value)
$value = strtolower($value);
Note that these two methods change the array "in place", whereas array_map
creates and returns a copy of the array, which may not be desirable in case of very large arrays.
Solution 3 - Php
You could use array_map(), set the first parameter to 'strtolower' (including the quotes) and the second parameter to $lower_case_array.
Solution 4 - Php
If you wish to lowercase all values in an nested array, use the following code:
function nestedLowercase($value) {
if (is_array($value)) {
return array_map('nestedLowercase', $value);
}
return strtolower($value);
}
So:
[ 'A', 'B', ['C-1', 'C-2'], 'D']
would return:
[ 'a', 'b', ['c-1', 'c-2'], 'd']
Solution 5 - Php
$Color = array('A' => 'Blue', 'B' => 'Green', 'c' => 'Red');
$strtolower = array_map('strtolower', $Color);
$strtoupper = array_map('strtoupper', $Color);
print_r($strtolower);
print_r($strtoupper);`
Solution 6 - Php
array_change_value_case
by continue
function array_change_value_case($array, $case = CASE_LOWER){
if ( ! is_array($array)) return false;
foreach ($array as $key => &$value){
if (is_array($value))
call_user_func_array(__function__, array (&$value, $case ) ) ;
else
$array[$key] = ($case == CASE_UPPER )
? strtoupper($array[$key])
: strtolower($array[$key]);
}
return $array;
}
$arrays = array ( 1 => 'ONE', 2=> 'TWO', 3 => 'THREE',
'FOUR' => array ('a' => 'Ahmed', 'b' => 'basem',
'c' => 'Continue'),
5=> 'FIVE',
array('AbCdeF'));
$change_case = array_change_value_case($arrays, CASE_UPPER);
echo "<pre>";
print_r($change_case);
> Array
> (
> [1] => one
> [2] => two
> [3] => three
> [FOUR] => Array
> (
> [a] => ahmed
> [b] => basem
> [c] => continue
> )
>
> [5] => five
> [6] => Array
> (
> [0] => abcdef
> )
>
> )
Solution 7 - Php
array_map()
is the correct method. But, if you want to convert specific array values or all array values to lowercase one by one, you can use strtolower()
.
for($i=0; $i < count($array1); $i++) {
$array1[$i] = strtolower($array1[$i]);
}
Solution 8 - Php
AIO Solution / Recursive / Unicode|UTF-8|Multibyte supported!
/**
* Change array values case recursively (supports utf8/multibyte)
* @param array $array The array
* @param int $case Case to transform (\CASE_LOWER | \CASE_UPPER)
* @return array Final array
*/
function changeValuesCase ( array $array, $case = \CASE_LOWER ) : array {
if ( !\is_array ($array) ) {
return [];
}
/** @var integer $theCase */
$theCase = ($case === \CASE_LOWER)
? \MB_CASE_LOWER
: \MB_CASE_UPPER;
foreach ( $array as $key => $value ) {
$array[$key] = \is_array ($value)
? changeValuesCase ($value, $case)
: \mb_convert_case($array[$key], $theCase, 'UTF-8');
}
return $array;
}
Example:
$food = [
'meat' => ['chicken', 'fish'],
'vegetables' => [
'leafy' => ['collard greens', 'kale', 'chard', 'spinach', 'lettuce'],
'root' => ['radish', 'turnip', 'potato', 'beet'],
'other' => ['brocolli', 'green beans', 'corn', 'tomatoes'],
],
'grains' => ['wheat', 'rice', 'oats'],
];
$newArray = changeValuesCase ($food, \CASE_UPPER);
Output
[ 'meat' => [ 0 => 'CHICKEN' 1 => 'FISH' ]
'vegetables' => [ 'leafy' => [ 0 => 'COLLARD GREENS' 1 => 'KALE' 2 => 'CHARD' 3 => 'SPINACH' 4 => 'LETTUCE' ]
'root' => [ 0 => 'RADISH' 1 => 'TURNIP' 2 => 'POTATO' 3 => 'BEET' ]
'other' => [ 0 => 'BROCOLLI' 1 => 'GREEN BEANS' 2 => 'CORN' 3 => 'TOMATOES' ]
]
'grains' => [ 0 => 'WHEAT' 1 => 'RICE' 2 => 'OATS' ]
]
Solution 9 - Php
Hi, try this solution. Simple use php array map
function myfunction($value)
{
return strtolower($value);
}
$new_array = ["Value1","Value2","Value3" ];
print_r(array_map("myfunction",$new_array ));
Output Array ( [0] => value1 [1] => value2 [2] => value3 )
Solution 10 - Php
You can also use a combination of array_flip()
and array_change_key_case()
. See this post