2

我有一个包含情人大小写的所有键的数组,我需要将它们更改为第一个字符为大写,就像ucfirs函数一样。是否可以不创建新数组?

4

4 回答 4

13

不创建新数组是不可能的,但这里有一个你可以使用的时髦的单线:

$array = array_combine(
    array_map('ucfirst', array_keys($array)), 
    array_values($array)
);

它将数组分解为键和值,转换键,然后将两个部分粘合在一起。

于 2013-04-17T07:18:31.010 回答
4

试试这个代码:

foreach ($array as $key => $value) {
        unset ($array[$key]);
        $array[ucfirst($key)] = $value;
}
于 2013-04-17T07:13:13.523 回答
0

试试这个

    foreach ($arr as $key=>$val){
        unset($arr[$key]);
        $key = ucfirst($key);
        $arr[$key]=$val;
      }
于 2013-04-17T07:12:25.537 回答
0

试试这个。它也适用于嵌套数组。

<?php
function ucfirstKeys(&$data)
{
  foreach ($data as $key => $value)
  {
    // Convert key
    $newKey = ucfirst($key);

    // Change key if needed
    if ($newKey != $key)
    {
      unset($data[$key]);
      $data[$newKey] = $value;
    }

    // Handle nested arrays
    if (is_array($value))
    {
      ucfirstKeys($data[$key]);
    }
  }
}

$test = array('foo' => 'bar', 'moreFoo' => array('more' => 'foo'));
ucfirstKeys($test);
print_r($test);
于 2013-04-17T07:22:34.463 回答