151

PHPで配列内のすべての値を小文字に変換するにはどうすればよいですか?

みたいなarray_change_key_case

4

11 に答える 11

400

使用array_map():

$yourArray = array_map('strtolower', $yourArray);

ネストされた配列を小文字にする必要がある場合( Yahya Uddinによる):

$yourArray = array_map('nestedLowercase', $yourArray);

function nestedLowercase($value) {
    if (is_array($value)) {
        return array_map('nestedLowercase', $value);
    }
    return strtolower($value);
}
于 2012-06-13T05:03:49.250 に答える
29

完全を期すために、以下も使用できますarray_walk

array_walk($yourArray, function(&$value)
{
  $value = strtolower($value);
});

PHP ドキュメントから:

コールバックが配列の実際の値を処理する必要がある場合は、コールバックの最初のパラメーターを参照として指定します。次に、これらの要素に加えられた変更は、元の配列自体で行われます。

または参照を使用してforeachループ経由で直接:

foreach($yourArray as &$value)
  $value = strtolower($value);

これら 2 つのメソッドは配列を「その場で」変更するのに対しarray_map、配列のコピーを作成して返すことに注意してください。これは、非常に大きな配列の場合には望ましくない場合があります。

于 2013-12-14T16:07:51.267 に答える
8

array_map() を使用して、最初のパラメーターを 'strtolower' (引用符を含む) に設定し、2 番目のパラメーターを $lower_case_array に設定します。

于 2012-06-13T05:04:33.050 に答える
5

ネストされた配列内のすべての値を小文字にしたい場合は、次のコードを使用します。

function nestedLowercase($value) {
    if (is_array($value)) {
        return array_map('nestedLowercase', $value);
    }
    return strtolower($value);
}

そう:

[ 'A', 'B', ['C-1', 'C-2'], 'D']

戻ります:

[ 'a', 'b', ['c-1', 'c-2'], 'd']   
于 2016-10-07T09:31:58.607 に答える
3

array_change_value_case

続けることで

    function array_change_value_case($array, $case = CASE_LOWER){
        if ( ! is_array($array)) return false;
        foreach ($array as $key => &$value){
            if (is_array($value))
            call_user_func_array(__function__, array (&$value, $case ) ) ;
            else
            $array[$key] = ($case == CASE_UPPER )
            ? strtoupper($array[$key])
            : strtolower($array[$key]);
        }
        return $array;
    }


    $arrays = array ( 1 => 'ONE', 2=> 'TWO', 3 => 'THREE',
                     'FOUR' => array ('a' => 'Ahmed', 'b' => 'basem',
                     'c' => 'Continue'),
                      5=> 'FIVE',
                      array('AbCdeF'));


    $change_case = array_change_value_case($arrays, CASE_UPPER);
    echo "<pre>";
    print_r($change_case);
Array
(
 [1] => one
 [2] => two
 [3] => three
 [FOUR] => Array
  (
   [a] => ahmed
   [b] => basem
   [c] => continue
  )

 [5] => five
 [6] => Array
  (
   [0] => abcdef
  )

)
于 2015-01-04T13:09:10.780 に答える
2

array_map()が正しい方法です。ただし、特定の配列値またはすべての配列値を 1 つずつ小文字に変換する場合は、strtolower().

for($i=0; $i < count($array1); $i++) {
    $array1[$i] = strtolower($array1[$i]);
}
于 2013-12-04T10:20:53.943 に答える