转换多维PHP数组的键和值

时间:2014-10-29 19:07:11

标签: php arrays recursion multidimensional-array

我有以下PHP数组:

$data = array(
    'data' => array(
        'first_key' => 'first_value',
        'second_key' => 'second_value',
        'third_key' => 'third_value',
        'fourth_key' => array(
            'mini_first' => 'mini_value'
        )));

我需要对键和值应用过滤器。为简单起见,我需要转换为大写并添加另一个字符:

$data = array(
    'DATA' => array(
        'FIRST_KEYx' => 'FIRST_VALUEx',
        'SECOND_KEYx' => 'SECOND_VALUEx',
        'THIRD_KEYx' => 'THIRD_VALUEx',
        'FOURTH_KEYx' => array(
            'MINI_FIRSTx' => 'MINI_VALUEx'
        )));

假设您不知道该数组将包含多少个数组级别。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

$newArray = array();
foreach ($data as $key => $value) {
    $newArray[strtoupper($key) . "x"] = strtoupper($value) ."x";
}
$data = $newArray;

答案 1 :(得分:1)

我认为这是对的:

<?php


$data = array(
    'data' => array(
        'first_key' => 'first_value',
        'second_key' => 'second_value',
        'third_key' => 'third_value',
        'fourth_key' => array(
            'mini_first' => 'mini_value'
        )));



function convert($array){

$new = array();
foreach($array as $key => $value){
    if(is_array($value)){

        $new[strtoupper($key)."x"] = convert($value);
    }else{

        $new[strtoupper($key)."x"] = strtoupper($value)."x";
    }
}

return $new;

}


print_r(convert($data));

演示:http://codepad.viper-7.com/L9Pow1

答案 2 :(得分:0)

您是否尝试过使用此

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