(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)
array_change_key_case — Changes the case of all keys in an array
Return ValuesReturns an array with its keys lower or uppercased.
ExamplesExample #1 array_change_key_case() example
<?php
$input_array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
?>
The above example will output:
Array ( [FIRST] => 1 [SECOND] => 4 )Notes
qeremy [atta] gmail [dotta] com ¶Note:
If an array has indices that will be the same once run through this function (e.g. "
keY
" and "kEY
"), the value that is later in the array will override other indices.
13 years ago
Unicode example;
<?php
function array_change_key_case_unicode($arr, $c = CASE_LOWER) {
$c = ($c == CASE_LOWER) ? MB_CASE_LOWER : MB_CASE_UPPER;
foreach ($arr as $k => $v) {
$ret[mb_convert_case($k, $c, "UTF-8")] = $v;
}
return $ret;
}$arr = array("FirSt" => 1, "yağ" => "Oil", "şekER" => "sugar");
print_r(array_change_key_case($arr, CASE_UPPER));
print_r(array_change_key_case_unicode($arr, CASE_UPPER));
?>
Array
(
[FIRST] => 1
[YAğ] => Oil
[şEKER] => sugar
)
Array
(
[FIRST] => 1
[YAĞ] => Oil
[ŞEKER] => sugar
)
xsaero00 ¶
11 years ago
Here is the most compact way to lower case keys in a multidimensional array
function array_change_key_case_recursive($arr)
{
return array_map(function($item){
if(is_array($item))
$item = array_change_key_case_recursive($item);
return $item;
},array_change_key_case($arr));
}
zhangxuejiang ¶
5 years ago
I improve the array_change_key_case_recursive function ,let it can lowercase or uppercase keys
function array_change_key_case_recursive($arr, $case = CASE_LOWER)
{
return array_map(function($item) use($case) {
if(is_array($item))
$item = array_change_key_case_recursive($item, $case);
return $item;
},array_change_key_case($arr, $case));
}
msegit post pl ¶
4 years ago
Improved multidimensional unicode func (after qeremy):
<?php
function array_change_key_case_unicode_recurs($arr, $c = CASE_LOWER) {
foreach ($arr as $k => $v) {
$ret[mb_convert_case($k, (($c === CASE_LOWER) ? MB_CASE_LOWER : MB_CASE_UPPER), "UTF-8")] = (is_array($v) ? array_change_key_case_unicode_recurs($v, $c) : $v );
}
return $ret;
}$arr = array("FirSt" => 1, "ZażóŁć gęŚlą jaŹń" => array("yağ" => "Oil", "şekER" => "sugar") );
print_r(array_change_key_case($arr, CASE_UPPER));
print_r(array_change_key_case_unicode_recurs($arr, CASE_UPPER));
?>
Array
(
[FIRST] => 1
[ZAżóŁć GęŚLą JAŹń] => Array
(
[yağ] => Oil
[şekER] => sugar
)
)
Array
(
[FIRST] => 1
[ZAŻÓŁĆ GĘŚLĄ JAŹŃ] => Array
(
[YAĞ] => Oil
[ŞEKER] => sugar
)
)
andreas dot schuhmacher87 at googlemail dot com ¶
17 years ago
multibyte and multi-dimensional-array support, have fun!
<?php
define('ARRAY_KEY_FC_LOWERCASE', 25); define('ARRAY_KEY_FC_UPPERCASE', 20); define('ARRAY_KEY_UPPERCASE', 15); define('ARRAY_KEY_LOWERCASE', 10); define('ARRAY_KEY_USE_MULTIBYTE', true); function array_change_key_case_ext(array $array, $case = 10, $useMB = false, $mbEnc = 'UTF-8') {
$newArray = array();if($useMB === false) {
$function = 'strToUpper'; switch($case) {
case 25:
if(!function_exists('lcfirst'))
$function = create_function('$input', '
return strToLower($input[0]) . substr($input, 1, (strLen($input) - 1));
');
else $function = 'lcfirst';
break;case 20:
$function = 'ucfirst';
break;case 10:
$function = 'strToLower';
}
} else {
switch($case) {
case 25:
$function = create_function('$input', '
return mb_strToLower(mb_substr($input, 0, 1, \'' . $mbEnc . '\')) .
mb_substr($input, 1, (mb_strlen($input, \'' . $mbEnc . '\') - 1), \'' . $mbEnc . '\');
');
break;
case 20:
$function = create_function('$input', '
return mb_strToUpper(mb_substr($input, 0, 1, \'' . $mbEnc . '\')) .
mb_substr($input, 1, (mb_strlen($input, \'' . $mbEnc . '\') - 1), \'' . $mbEnc . '\');
');
break;
case 15:
$function = create_function('$input', '
return mb_strToUpper($input, \'' . $mbEnc . '\');
');
break;default: $function = create_function('$input', '
return mb_strToLower($input, \'' . $mbEnc . '\');
');
}
}foreach($array as $key => $value) {
if(is_array($value)) $newArray[$function($key)] = array_change_key_case_ex($value, $case, $useMB);
elseif(is_string($key))
$newArray[$function($key)] = $value;
else $newArray[$key] = $value; } return $newArray;
}
?>
shaman_master at list dot ru ¶
5 years ago
<?php
function array_convert_key_case(array $array, callable $callback = 'strtolower')
{
return array_combine(
array_map($callback, array_keys($array)),
array_values($array)
);
}
?>
2 years ago
Array of partitions with always the same number of sub-array indexes.
<?phpfunction partitionFixedSubArray($array, $length, $empty_space)
{
$result = [];
if (
sizeof($array) ) {$result = array_chunk($array, $length);
$last_array_count = sizeof(end($result));
if (
$last_array_count < $length) {
for (
$i = $last_array_count; $i < $length; $i++) {
array_push($result[key($result)], $empty_space);
}
}
}
return
$result;
}$employees = [
"Paidi",
"Paijo",
"Darno",
"Kusnan",
"Mukidi",
"Sarno",
"Nurdin",
"Parmen",
"Sukinah",
"Sartini",
"Sukijan",
"Yono",
"Supoyo"
];
echo
"<pre>";
print_r(partitionFixedSubArray($employees, 5, "empty space"));
echo "</pre>";?>
Output:
Array
(
[0] => Array
(
[0] => Paidi
[1] => Paijo
[2] => Darno
[3] => Kusnan
[4] => Mukidi
)
[1] => Array
(
[0] => Sarno
[1] => Nurdin
[2] => Parmen
[3] => Sukinah
[4] => Sartini
)
[2] => Array
(
[0] => Sukijan
[1] => Yono
[2] => Supoyo
[3] => empty space
[4] => empty space
)
)
NetPanther ¶
12 years ago
Use this to capitalize first letter of all array keys:
<?phpfunction ucfirstKeys(&$data)
{
foreach ($data as $key => $value)
{
$newKey = ucfirst($key);if ($newKey != $key)
{
unset($data[$key]);
$data[$newKey] = $value;
}if (is_array($value))
{
ucfirstKeys($data[$key]);
}
}
}$test = array('foo' => 'bar', 'moreFoo' => array('more' => 'foo'));
ucfirstKeys($test);
print_r($test);?>
Result:
Array ( [MoreFoo] => Array ( [More] => foo ) [Foo] => bar )
cm at gameswelt dot de ¶
18 years ago
I just changed the code a little bit so you havent got a code that repeats itself.
<?phpfunction array_change_key_case_secure($array = array(), $case = CASE_UPPER){
$secure = array();
$functionWrap = array(CASE_UPPER => 'strtoupper',
CASE_LOWER => 'strtolower');
foreach(
$array as $key => $val){
if(isset($functionWrap[$key])){
$key = $functionWrap[$case]($key);
$secure[$key][] = $val;
} else {
die('Not a known Type');
}
}
foreach(
$secure as $key => $val){
if(count($secure[$key]) == 1){
$secure[$key] = $val[0];
}
}
return
$secure;
}$myArray = array('A' => 'Hello',
'B' => 'World',
'a' => 'how are you?');print_r($myArray);
$myArray = array_change_key_case_secure($myArray);
print_r($myArray);
john at doe dot com ¶
17 years ago
<?php
function array_change_value_case($input, $case = CASE_LOWER)
{
$aRet = array();
if (!
is_array($input))
{
return $aRet;
}
foreach (
$input as $key => $value)
{
if (is_array($value))
{
$aRet[$key] = array_change_value_case($value, $case);
continue;
}$aRet[$key] = ($case == CASE_UPPER ? strtoupper($value) : strtolower($value));
}
return
$aRet;
}
?>
anon at ymous dot com ¶
16 years ago
Below is a recursive version of this function.
<?php
function array_change_key_case_recursive($input, $case = null){
if(!is_array($input)){
trigger_error("Invalid input array '{$array}'",E_USER_NOTICE); exit;
}
if(null === $case){
$case = CASE_LOWER;
}
if(!in_array($case, array(CASE_UPPER, CASE_LOWER))){
trigger_error("Case parameter '{$case}' is invalid.", E_USER_NOTICE); exit;
}
$input = array_change_key_case($input, $case);
foreach($input as $key=>$array){
if(is_array($array)){
$input[$key] = array_change_key_case_recursive($array, $case);
}
}
return $input;
}
?>
gsoft ¶
2 years ago
//Array key case change recursively (Unicode):
<?php
function array_key_case($data,$case=FALSE)
{
$ret=array();
if ( is_array($data) )
foreach ($data as $idx => $val)
$ret[$case ? mb_strtoupper($idx) : mb_strtolower($idx)]=array_key_case($val,$case);
else
$ret=$data;
return $ret;
}
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4