配列キー値の大文字と小文字の変換

2627 ワード

phpは大文字と小文字の変換array_を実現する関数を提供します.change_key_case(array,case)arrayが必要です.使用する配列を指定します.case  CASE_LOWER-デフォルト、小文字;CASE_UPPER大文字.例:
$arr = array('ID' => 1, 'NAME'=> 'Yami', 'Con' => array('PHONE' => '123456', 'EMAIL' => '[email protected]') );
print_r(array_change_key_case($arr,CASE_LOWER));

残念なことに,この方法は1次元配列の変換しか実現できない.多次元配列の変換を実現するための関数を以下に書きます.

/*
 *          
 *
 * @author    yamiliu<[email protected]>
 * @params    $aValue  array           
 * @params    $case    boolean  0:  、   ;1:  
 * 
 */
function changeArrKey(&$aValue, $case = 0)
{
    foreach ( $aValue as $key => $item ) {
        if ( $case ) {
            $keyTemp = strtoupper($key);
        } else {
            $keyTemp = strtolower($key);
        } 
        if ( $keyTemp != $key ) {
            unset($aValue[$key]);
            $aValue[$keyTemp] = $item;
        }
        if ( is_array($item) ) {
            changeArrKey($aValue[$keyTemp], $case);
        }
    }

}
//   
$arr = array('ID' => 1, 'NAME'=> 'Yami', 'Con' => array('PHONE' => '123456', 'EMAIL' => '[email protected]') );
changeArrKey($arr);
var_dump($arr);

その後、元の配列の値を変えるのは良い注意ではないと考えて、次のように書きました.

/*
 * @author    yamiliu<[email protected]>
 * @params    array   $aValue           
 * @params    boolean $case      0:  、   ;1:  
 * @return    array                     
 */
function array_key_to_case( $aValue, $case = 0 ) 
{
    $aValueTemp = array();
    foreach ( $aValue as $key => $item ) {
        if ( $case ) {
            $keyTemp = strtoupper($key);
        } else {
            $keyTemp = strtolower($key);
        }
        $aValueTemp[$keyTemp] = $item;
        if ( is_array($item) ) {
            $aValueTemp[$keyTemp] = array_key_to_case($item, $case);
        }
    }
    return $aValueTemp;
}
//   
$arr = array('id' => 1, 'name'=> 'Yami', 'Con' => array('phone' => '123456', 'email' => '[email protected]') );
$r   = array_key_to_case($arr, 1);
print_r($r);

自分のコードを書き続けることは、技術の向上に大きなメリットがあります.