如何在 PHP 中将数组中的所有值转换为小写?
array_change_key_case之类的?
array_change_key_case
使用 array_map():
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()。
strtolower()
for($i=0; $i < count($array1); $i++) { $array1[$i] = strtolower($array1[$i]); }
为了完整起见: 你也可以使用 array_walk:
array_walk
array_walk($yourArray, function(&$value) { $value = strtolower($value); });
来自 PHP 文档:
如果回调需要处理数组的实际值,请指定回调的第一个参数作为引用。然后,对这些元素所做的任何更改都将在原始数组本身中进行。
或者直接通过 foreach循环使用 参考文献:
foreach
foreach($yourArray as &$value) $value = strtolower($value);
请注意,这两个方法改变数组“就地”,而 array_map创建并返回数组的一个副本,在非常大的数组情况下,这可能是不可取的。
array_map
您也可以使用 array_flip()和 array_change_key_case()的组合。参见 这篇文章
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 )
Array ( [0] => value1 [1] => value2 [2] => value3 )