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

时间:2015-06-05 07:31:58

标签: php arrays substring associative-array

这是我的数组(输入):

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

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

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

现在我的问题是我希望通过调整每个键的最后两个字符来获取所有键。

如何更改/修改我的代码,以便修剪每个键的最后两个字符?

修改

我也想跳过前3个键,意味着我不想修剪前3个键。

2 个答案:

答案 0 :(得分:3)

我认为这应该适合你:

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

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

修改

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

$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)));

答案 1 :(得分:1)

这是未确定数组深度的内容。

$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+,这将不起作用,因为较低版本没有匿名功能。