函式:
array_change_key_case(array $array [, int $case = CASE_LOWER ]) :array
將陣列中的所有鍵名改為全小寫 或是大寫, 本函式不改變數字索引。
預設值為 CASE_LOWER 小寫,相對應的 大寫是 CASE_UPPER。
例:
$array = array('First'=>1,'SecOnd'=>2);
$result = array_change_key_case($array, CASE_UPPER);
var_dump($result);
結果為:
array('FIRST'=>1,'SECOND'=>2)
有一種特殊情況 除外:
$arr = array("FirSt" => 1, "yağ" => "Oil", "şekER" => "sugar");
這種特殊字元需要進行一下編碼的特殊處理。這裡用到了另外一個函式
mb_convert_case(string $str, int $mode [, string $encoding = mb_internal_encoding()] )
--對字串進行大小寫轉換
引數:
str 要被轉換的string 字串
mode 要被轉換的 模式 有三個引數 MB_CASE_UPPER 、 MB_CASE_LOWER、 MB_CASE_TITLE
MB_CASE_UPPER:字串全部大寫
MB_CASE_LOWER:字串全部小寫
MB_CASE_TITLE:字串各單詞首字母大寫
encoding 引數為字元編碼,如果省略了,則會使用內部字元編碼 (這個內部字元編碼暫時還沒找到預設是什麼,哪個大神知道,指導一下小弟)
處理函式例項:如有不同方法,請各位補充一下()
function array_change_key_case_unicode($array, $case = CASE_LOWER)
{
$case = ($case == CASE_LOWER) ? MB_CASE_LOWER : MB_CASE_UPPER;
foreach($array as $key => $value){
$result[mb_convert_case($key, $case, 'UTF_8')] = $value;
}
return $result;
}
結果:
print_r(array_change_key_case($arr, CASE_UPPER));
Array
(
[FIRST] => 1
[YAğ] => Oil
[şEKER] => sugar
)
print_r(array_change_key_case_unicode($arr, CASE_UPPER));
Array
(
[FIRST] => 1
[YAĞ] => Oil
[ŞEKER] => sugar
)