【问题标题】:Converting keys and values of a multidimensional PHP array转换多维 PHP 数组的键和值
【发布时间】:2014-12-25 15:28:49
【问题描述】:

我有以下 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'
        )));

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

【问题讨论】:

  • foreacharray_walkarray_map。去尝试一下
  • 我尝试了array_walk_recursive,因为没有限制,所以这很有意义。但是,array_walk_recursive 仅适用于叶节点,我需要更改所有键。还有一些内部键保存数组......我不会问我是否没有尝试:)

标签: php arrays recursion multidimensional-array


【解决方案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】:
    $newArray = array();
    foreach ($data as $key => $value) {
        $newArray[strtoupper($key) . "x"] = strtoupper($value) ."x";
    }
    $data = $newArray;
    

    【讨论】:

    • 需要添加对多维的检查并使其递归,但这将是我的基本方法
    【解决方案3】:

    你试过用这个吗

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多