wake-up-neo.net

Wie konvertiere ich Array-Werte in PHP in Kleinbuchstaben?

Wie kann ich alle Werte in einem Array in PHP in Kleinbuchstaben konvertieren?

So etwas wie array_change_key_case?

110
user1163513

benutze array_map() :

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

Nur zur Vollständigkeit: Sie können auch array_walk verwenden: 

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

Aus PHP -Dokumenten: 

Wenn Callback mit den tatsächlichen Werten des Arrays arbeiten muss, geben Sie den ersten Parameter des Callbacks als Referenz an. Alle an diesen Elementen vorgenommenen Änderungen werden dann im ursprünglichen Array selbst vorgenommen. 

Oder direkt über foreach loop mit Referenzen

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

Beachten Sie, dass diese beiden Methoden das Array "in place" ändern, wohingegen array_map eine Kopie des Arrays erstellt und zurückgibt, was bei sehr großen Arrays möglicherweise nicht erwünscht ist. 

23
Alex Shesterov

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.

6
verisimilitude

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']   
4
Yahya Uddin

array_change_value_case

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
  )

)

array_map() ist die richtige Methode. Wenn Sie jedoch bestimmte Array-Werte oder alle Array-Werte einzeln in Kleinbuchstaben konvertieren möchten, können Siestrtolower()verwenden.

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

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);
0
Greg Bologna

AIO-Lösung/Rekursiv/Unicode | UTF-8 | Multibyte wird 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'
    ]
]
0
Junaid Atari