查找与在关联数组中处理关键帧等效的array_map


Looking for array_map equivalent to work on keys in associative arrays

假设我有一个关联数组:

    $array = array(
      "key1" => "value",
      "key2" => "value2");

我想把这些键都大写。我该怎么做,而不是用一种通用的方式(这意味着我可以应用一个用户定义的函数来应用于密钥名称)?

您可以使用php的array_change_key_case函数

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

令人惊讶的是,有一个array_change_key_case函数。

除了上面的答案之外,下面的代码也可以实现。优点是,您可以将其用于keys上的任何操作,而不是仅制作密钥uppercase

<?php
   $arr = array(
      "key1" => "value",
      "key2" => "value2"
   );
  echo "<pre>";print_r($arr);echo "</pre>";
  $arra = array_combine(
        array_map(function($k){ 
           return strtoupper($k); 
        }, array_keys($arr)
    ), $arr);
  echo "<pre>";print_r($arra);echo "</pre>";

该代码输出为:

Array
(
    [key1] => value
    [key2] => value2
)
Array
(
    [KEY1] => value
    [KEY2] => value2
)

因此,这只是一个替代更通用的解决方案,用于更改数组的keys

谢谢。

您可以使用foreach循环:

$newArray = array();
foreach ($array as $k => $v) {
    $newArray[strtoupper($k)] = $v;
}