如何 trim 数组中每个键的最后两个字符?

How can I trim the last two characters of each key in an array?

这是我的数组(输入):

$value = array("jan01" => "01", "feb02" => "02", "mar03" => "03", "apr04" => "04");

我正在使用此代码获取数组键:

implode(" ", array_map("ucwords", array_keys($value)));

现在我的问题是我想通过 trim 获取每个键的最后两个字符来获取所有键。

如何 change/modify 我的代码,使其 trim 成为每个键的最后两个字符?

编辑:

我也想跳过前 3 个键,这意味着我不希望前 3 个键是 trimmed。

这是未确定的数组深度。

$arr = your array;
$trimmed_values = array();

array_walk_recursive($arr, function($key, $value) use (&$trimmed_values)
{
    $trimmed_values[] = substr($key, 0, -2);
});

如果您不使用 PHP 5.3+,这将不起作用,因为较低版本没有匿名函数。

我认为这对你有用:

只需从您的密钥中取出 substr(),然后在其上使用 ucwords()

implode(" ",array_map(function($v){
    return ucwords(substr($v, 0, -2));
},array_keys($value)));

编辑:

AS 根据您更新的问题,您不想从前 3 个元素中获取 substr。所以只需使用一个计数器变量,例如

$counter = 1;
echo implode(" ", array_map(function($v)use(&$counter){
    if($counter++ > 3)
        return ucwords(substr($v, 0, -2));
    return ucwords($v);
},array_keys($value)));