How to convert array values to lowercase in PHP?

PhpArraysStringLowercase

Php 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1163513View Question on Stackoverflow
Solution 1 - PhpariefbayuView Answer on Stackoverflow
Solution 2 - PhpAlex ShesterovView Answer on Stackoverflow
Solution 3 - PhpverisimilitudeView Answer on Stackoverflow
Solution 4 - PhpYahya UddinView Answer on Stackoverflow
Solution 5 - Phphasnath rummanView Answer on Stackoverflow
Solution 6 - Phpكونتينيو للآبدView Answer on Stackoverflow
Solution 7 - PhpJasmeenView Answer on Stackoverflow
Solution 8 - PhpJunaid AtariView Answer on Stackoverflow
Solution 9 - PhpChris Shabani MuswambaView Answer on Stackoverflow
Solution 10 - PhpJasir KTView Answer on Stackoverflow