array_change_key_case

(PHP 4 >= 4.2.0, PHP 5)

array_change_key_case -- 返回字符串键名全为小写或大写的数组

说明

array array_change_key_case ( array input [, int case] )

array_change_key_case()input 数组中的所有键名改为全小写或大写。改变是根据后一个选项 case 参数来进行的。可以在这里用两个常量,CASE_UPPERCASE_LOWER。默认值是 CASE_LOWER。本函数不改变数字索引。

例 1. array_change_key_case() 例子

<?php
$input_array
= array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($input_array, CASE_UPPER));
?>

上例将输出:

Array
(
    [FIRST] => 1
    [SECOND] => 4
)

如果一个数组中的多个键名经过本函数后变成一样的话(例如 "keY" 和 "kEY"),最后一个值将覆盖其它的值。


add a note add a note User Contributed Notes
cm at gameswelt dot de
10-Aug-2007 11:11
I just changed the code a little bit so you havent got a code that repeats itself.

<?php

function 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);

/*
Array
(
   [A] => Hello
   [B] => World
   [a] => how are you?
)
Array
(
   [A] => Array
       (
           [0] => Hello
           [1] => how are you?
       )

   [B] => World
)
*/
cdblog at gmail dot com
20-May-2005 08:55
<?php
/**
* @return array
* @author Cocol
* @desc  change the key case , if found repeat keys, then  convert to array
* for more detail please visit http://php.clickz.cn/array/array_change_key_case.html
*/
function array_change_key_case_secure($array = array(),$case = CASE_UPPER) {
  
$secure = array();
   if (
$case == CASE_UPPER) {
       foreach (
$array as $key=>$val) {
          
$key = strtoupper($key);
           if (!
array_key_exists($key,$secure)) {
              
$secure[$key][] = $val;
           } else {
              
$secure[$key][] = $val;
           }
       }
   } else if (
$case == CASE_LOWER) {
       foreach (
$array as $key=>$val) {
          
$key = strtolower($key);
           if (!
array_key_exists($key,$secure)) {
              
$secure[$key][] = $val;
           } else {
              
$secure[$key][] = $val;
           }
       }       
   }
  
   foreach (
$secure as $key=>$val) {
       if (
count($secure[$key]) == 1) {
          
$secure[$key] = $val[0];
       }
   }
   return
$secure;   
}

$array = array(
  
'a' => "john",
  
'A' => "vary",
  
'c' => "cocol",
);
print_r($array);
$array = array_change_key_case_secure($array,CASE_UPPER);
print_r($array);

?>
output:
Array
(
   [a] => john
   [A] => vary
   [c] => cocol
)
Array
(
   [A] => Array
       (
           [0] => john
           [1] => vary
       )

   [C] => cocol
)
aidan at php dot net
02-Jun-2004 03:06
This functionality is now implemented in the PEAR package PHP_Compat.

More information about using this function without upgrading your version of PHP can be found on the below link:

http://pear.php.net/package/PHP_Compat