如何编写递归ucwords方法

时间:2012-08-19 23:26:24

标签: php string

我需要所有的话都是正确的,首字母大写,其他小写。

我试过了:

array_walk_recursive($my_array,'ucwords');

但我想这个功能需要由用户定义。

所以我写道:

function ucrecursive($value,$key) {
    return ucwords($value);
}

array_walk_recursive(&$my_array,'ucrecursive');

仍然无效。有什么想法吗?

编辑:样本数据:

Array
(
    [0] => Array
        (
            [count] => 768
            [value] => SATIN NICKEL
        )

    [1] => Array
        (
            [count] => 525
            [value] => POLISHED CHROME
        )

    [2] => Array
        (
            [count] => 180
            [value] => AGED BRONZE
        )

等...

4 个答案:

答案 0 :(得分:3)

array_walk_recursive($my_array,function(&$value) {
    $value = ucwords($value);
});

试试这个

答案 1 :(得分:2)

自己构建它应该很容易:

function ucWordsRecursive( array &$array ) {
    foreach( $array as &$value ) {
        if( is_array( $value ) ) {
             ucWordsRecursive( $value );
        }
        else if( is_string( $value ) ){
            $value = ucwords( strtolower( $value ) );
        }
    }
}

答案 2 :(得分:1)

那将是:

array_walk_recursive($my_array,function(&$value) {
    $value = ucwords(strtolower($value));
});

答案 3 :(得分:0)

如果有人想在没有任何内置函数的情况下以递归方式构建它

function capitalizeWords ($array) {
 if (count($array) === 1) {
     return [ucwords($array[0])];
 }
 $res = capitalizeWords(array_slice($array,0,-1));
 array_push($res,ucwords(array_slice($array,count($array)-1)[0]));
 return $res;

}

capitalizeWords(['php','javascript','golang']);`