4

我需要所有单词的大小写正确,首字母大写,其他小写。

我试过了:

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
        )

ETC...

4

4 回答 4

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

尝试这个

于 2012-08-19T23:36:22.480 回答
2

自己构建应该很容易:

function ucWordsRecursive( array &$array ) {
    foreach( $array as &$value ) {
        if( is_array( $value ) ) {
             ucWordsRecursive( $value );
        }
        else if( is_string( $value ) ){
            $value = ucwords( strtolower( $value ) );
        }
    }
}
于 2012-08-19T23:31:27.477 回答
1

那将是:

array_walk_recursive($my_array,function(&$value) {
    $value = ucwords(strtolower($value));
});
于 2017-02-27T16:47:32.700 回答
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']);`
于 2020-10-16T20:13:41.673 回答