在php中的foreach循环中更改关联数组的$ key

bri*_*ser 10 php arrays foreach associative-array key

我有这样一个数组:

array(
    'firstName' => 'Joe',
    'lastName'  => 'Smith'
    )
Run Code Online (Sandbox Code Playgroud)

我需要循环遍历数组中的每个元素,最后,数组应如下所示:

array(
    'FirstName' => 'Joe',
    'LastName'  => 'Smith'
    )
Run Code Online (Sandbox Code Playgroud)

失败的想法是:

    foreach($array as $key => $value)
    {
        $key = ucfirst($key);
    }
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,因为数组不是通过引用传递的.但是,所有这些尝试也都失败了:

    foreach(&$array as $key => $value)
    {
        $key = ucfirst($key);
    }


    foreach($array as &$key => $value)
    {
        $key = ucfirst($key);
    }
Run Code Online (Sandbox Code Playgroud)

我的智慧结束了这个.我正在使用Magento 1.9.0.1 CE,但这与此问题无关.如果你必须知道,我必须这样做的原因是因为我有一堆对象,我将作为一个数组返回组装到SOAP客户端.我正在使用的API要求键以大写字母开头...但是,我不希望将对象的变量名的第一个字母大写.傻,我知道,但我们都回答某人,并且有人想要这样.

cmo*_*sey 24

foreach($array as $key => $value)
    {
        $array[ucfirst($key)] = $value;
        unset($array[$key]);
    }
Run Code Online (Sandbox Code Playgroud)

  • 如果键已经有大写的第一个字母,这不会从数组中完全删除该条目吗?应该`unset`然后分配,对吗? (2认同)

Abr*_*ver 11

您无法修改a中的键foreach,因此您需要创建一个新键并取消旧键.这是另一种方式:

$array = array_combine(array_map('ucfirst', array_keys($array)), $array);
Run Code Online (Sandbox Code Playgroud)
  1. 获取密钥使用 array_keys
  2. 使用适用ucfirst于键array_map
  3. 将新键与值组合使用 array_combine