Wie kann ich alle Werte in einem Array in PHP in Kleinbuchstaben konvertieren?
So etwas wie array_change_key_case
?
Wie kann ich alle Werte in einem Array in PHP in Kleinbuchstaben konvertieren?
So etwas wie array_change_key_case
?
Antworten:
Verwenden Sie array_map()
:
$yourArray = array_map('strtolower', $yourArray);
Falls Sie ein verschachteltes Array in Kleinbuchstaben benötigen (von Yahya Uddin ):
$yourArray = array_map('nestedLowercase', $yourArray);
function nestedLowercase($value) {
if (is_array($value)) {
return array_map('nestedLowercase', $value);
}
return strtolower($value);
}
mb_strtolower
$yourArray = array_map('mb_strtolower', $yourArray);
Ich habe gerade nachgesehen und es hat für Cyrillic
Nur der Vollständigkeit halber: Sie können auch verwenden array_walk
:
array_walk($yourArray, function(&$value)
{
$value = strtolower($value);
});
Aus PHP-Dokumenten:
Wenn der Rückruf mit den tatsächlichen Werten des Arrays arbeiten muss, geben Sie den ersten Parameter des Rückrufs als Referenz an. Anschließend werden alle an diesen Elementen vorgenommenen Änderungen im ursprünglichen Array selbst vorgenommen.
Oder direkt über eine foreach
Schleife mit Referenzen :
foreach($yourArray as &$value)
$value = strtolower($value);
Beachten Sie, dass diese beiden Methoden das Array "an Ort array_map
und Stelle" ändern, während eine Kopie des Arrays erstellt und zurückgegeben wird, was bei sehr großen Arrays möglicherweise nicht wünschenswert ist.
array_walk_recursive()
. Auch mb_strtolower()
weil die Welt mehrsprachig ist.
Sie können array_map () verwenden, den ersten Parameter auf 'strtolower' (einschließlich der Anführungszeichen) und den zweiten Parameter auf $ lower_case_array setzen.
Wenn Sie alle Werte in einem verschachtelten Array in Kleinbuchstaben schreiben möchten , verwenden Sie den folgenden Code:
function nestedLowercase($value) {
if (is_array($value)) {
return array_map('nestedLowercase', $value);
}
return strtolower($value);
}
So:
[ 'A', 'B', ['C-1', 'C-2'], 'D']
würden zurückkehren:
[ 'a', 'b', ['c-1', 'c-2'], 'd']
array_change_value_case
durch weiter
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 ) )
AIO Solution / Recursive / Unicode | UTF-8 | Multibyte unterstützt!
/**
* 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;
}
Beispiel:
$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);
Ausgabe
[
'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'
]
]
Sie sagen nicht, ob Ihr Array mehrdimensional ist. Wenn dies der Fall ist, funktioniert array_map nicht alleine. Sie benötigen eine Rückrufmethode. Versuchen Sie für mehrdimensionale Arrays array_change_key_case .
// You can pass array_change_key_case a multi-dimensional array,
// or call a method that returns one
$my_array = array_change_key_case(aMethodThatReturnsMultiDimArray(), CASE_UPPER);
$ Color = Array ('A' => 'Blau', 'B' => 'Grün', 'c' => 'Rot');
$ strtolower = array_map ('strtolower', $ Color);
$ strtoupper = array_map ('strtoupper', $ Color);
print_r ($ strtolower); print_r ($ strtoupper); `
Sie können auch eine Kombination aus array_flip()
und verwenden array_change_key_case()
. Siehe diesen Beitrag
array_flip()
wenn das Array doppelte Werte enthält.