重新學習一下陣列函式

lary-zhang發表於2019-07-20

函式:

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
)

相關文章