Как преобразовать значения массива в нижний регистр в PHP?

Как преобразовать все значения в массив в нижний регистр в PHP?

Что-то вроде array_change_key_case?

Ответ 1

используйте array_map():

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

Ответ 2

Просто для полноты: вы также можете использовать array_walk:

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

Из документов PHP:

Если обратный вызов должен работать с фактическими значениями массива, укажите первый параметр обратного вызова в качестве ссылки. Затем любые изменения, внесенные в эти элементы, будут сделаны в самом исходном массиве.

Или напрямую через цикл foreach, используя references:

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

Обратите внимание, что эти два метода изменяют массив "на месте", тогда как array_map создает и возвращает копию массива, что может быть нежелательно в случае очень больших массивов.

Ответ 3

Вы можете использовать array_map(), установить первый параметр в 'strtolower' (включая кавычки), а второй - $lower_case_array.

Ответ 4

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
  )

)

Ответ 5

array_map() - правильный метод. Но если вы хотите преобразовать определенные значения массива или все значения массива в нижний регистр один за другим, вы можете использовать strtolower().

for($i=0; $i < count($array1); $i++) {
    $array1[$i] = strtolower($array1[$i]);
}

Ответ 6

Если вы хотите записать все значения в массив вложенных, используйте следующий код:

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']   

Ответ 7

Вы также можете использовать комбинацию array_flip() и array_change_key_case(). См. этот пост