Как преобразовать все значения в массив в нижний регистр в PHP?
Что-то вроде array_change_key_case
?
Как преобразовать все значения в массив в нижний регистр в PHP?
Что-то вроде array_change_key_case
?
используйте array_map()
:
$yourArray = array_map('strtolower', $yourArray);
Просто для полноты: вы также можете использовать array_walk
:
array_walk($yourArray, function(&$value)
{
$value = strtolower($value);
});
Из документов PHP:
Если обратный вызов должен работать с фактическими значениями массива, укажите первый параметр обратного вызова в качестве ссылки. Затем любые изменения, внесенные в эти элементы, будут сделаны в самом исходном массиве.
Или напрямую через цикл foreach
, используя references:
foreach($yourArray as &$value)
$value = strtolower($value);
Обратите внимание, что эти два метода изменяют массив "на месте", тогда как array_map
создает и возвращает копию массива, что может быть нежелательно в случае очень больших массивов.
Вы можете использовать array_map(), установить первый параметр в 'strtolower' (включая кавычки), а второй - $lower_case_array.
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 ) )
array_map()
- правильный метод. Но если вы хотите преобразовать определенные значения массива или все значения массива в нижний регистр один за другим, вы можете использовать strtolower()
.
for($i=0; $i < count($array1); $i++) {
$array1[$i] = strtolower($array1[$i]);
}
Если вы хотите записать все значения в массив вложенных, используйте следующий код:
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']
Вы также можете использовать комбинацию array_flip()
и array_change_key_case()
. См. этот пост