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
        )

等...

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 に答える