如何在 PHP 中将数组值转换为小写?

如何在 PHP 中将数组中的所有值转换为小写?

array_change_key_case之类的?

137062 次浏览

使用 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);
}

您可以使用 array _ map () ,将第一个参数设置为‘ strtolower’(包括引号) ,将第二个参数设置为 $low _ case _ array。

array_map()是正确的方法。但是,如果希望将特定的数组值或所有数组值逐个转换为小写,则可以使用 strtolower()

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

为了完整起见: 你也可以使用 array_walk:

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

来自 PHP 文档:

如果回调需要处理数组的实际值,请指定回调的第一个参数作为引用。然后,对这些元素所做的任何更改都将在原始数组本身中进行。

或者直接通过 foreach循环使用 参考文献:

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

请注意,这两个方法改变数组“就地”,而 array_map创建并返回数组的一个副本,在非常大的数组情况下,这可能是不可取的。

您也可以使用 array_flip()array_change_key_case()的组合。参见 这篇文章

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
)


)

如果希望将 嵌套的数组中的所有值都小写,请使用以下代码:

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

AIO 解决方案/递归/Unicode | UTF-8 | 支持多字节!

/**
* Change array values case recursively (supports utf8/multibyte)
* @param array $array The array
* @param int $case Case to transform (\CASE_LOWER | \CASE_UPPER)
* @return array Final array
*/
function changeValuesCase ( array $array, $case = \CASE_LOWER ) : array {
if ( !\is_array ($array) ) {
return [];
}


/** @var integer $theCase */
$theCase = ($case === \CASE_LOWER)
? \MB_CASE_LOWER
: \MB_CASE_UPPER;


foreach ( $array as $key => $value ) {
$array[$key] = \is_array ($value)
? changeValuesCase ($value, $case)
: \mb_convert_case($array[$key], $theCase, 'UTF-8');
}


return $array;
}

例如:

$food = [
'meat' => ['chicken', 'fish'],
'vegetables' => [
'leafy' => ['collard greens', 'kale', 'chard', 'spinach', 'lettuce'],
'root'  => ['radish', 'turnip', 'potato', 'beet'],
'other' => ['brocolli', 'green beans', 'corn', 'tomatoes'],
],
'grains' => ['wheat', 'rice', 'oats'],
];


$newArray = changeValuesCase ($food, \CASE_UPPER);

输出

    [
'meat' => [
0 => 'CHICKEN'
1 => 'FISH'
]
'vegetables' => [
'leafy' => [
0 => 'COLLARD GREENS'
1 => 'KALE'
2 => 'CHARD'
3 => 'SPINACH'
4 => 'LETTUCE'
]
'root' => [
0 => 'RADISH'
1 => 'TURNIP'
2 => 'POTATO'
3 => 'BEET'
]
'other' => [
0 => 'BROCOLLI'
1 => 'GREEN BEANS'
2 => 'CORN'
3 => 'TOMATOES'
]
]
'grains' => [
0 => 'WHEAT'
1 => 'RICE'
2 => 'OATS'
]
]
$Color = array('A' => 'Blue', 'B' => 'Green', 'c' => 'Red');


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


$strtoupper = array_map('strtoupper', $Color);


print_r($strtolower);
print_r($strtoupper);`

Hi ,尝试这个解决方案,简单的使用 < a href = “ https://www.php.net/Manual/en/function. array-map.php”rel = “ nofollow noReferrer”> php 数组映射

function myfunction($value)
{
return strtolower($value);
}


$new_array = ["Value1","Value2","Value3" ];
print_r(array_map("myfunction",$new_array ));

输出 Array ( [0] => value1 [1] => value2 [2] => value3 )