PHP में एरे वैल्यू को लोअरकेस में कैसे बदलें?


132

कैसे मैं PHP में लोअरकेस में सभी मानों को परिवर्तित कर सकता हूं?

कुछ पसंद है array_change_key_case?

जवाबों:


355

उपयोग array_map():

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

मामले में आपको नेस्टेड सरणी ( याह्या उद्दीन द्वारा ) कम करने की आवश्यकता है:

$yourArray = array_map('nestedLowercase', $yourArray);

function nestedLowercase($value) {
    if (is_array($value)) {
        return array_map('nestedLowercase', $value);
    }
    return strtolower($value);
}

16
तुमसे प्यार करता हूँ, तुमसे प्यार करता हूँ, तुमसे प्यार करता हूँ
क्रेग वेन

एक अच्छा एकल जवाब। धन्यवाद
जोस Ayrám

@ उपयोगmb_strtolower
user3841429

@ user3841429 mb_strtolower ने मदद नहीं की। PHP7.2।
विटामिन

2
@Vit आपने इसे निम्न की तरह उपयोग किया? $yourArray = array_map('mb_strtolower', $yourArray);मैंने अभी जाँच की और यह सिरिलिक के लिए काम किया
user3841429

27

पूर्णता के लिए: आप भी उपयोग कर सकते हैं array_walk:

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

PHP डॉक्स से:

यदि कॉलबैक को सरणी के वास्तविक मानों के साथ काम करने की आवश्यकता है, तो कॉलबैक के पहले पैरामीटर को संदर्भ के रूप में निर्दिष्ट करें। फिर, उन तत्वों में कोई भी परिवर्तन मूल सरणी में ही किया जाएगा।

या सीधे संदर्भों का उपयोग करके foreachलूप के माध्यम से :

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

ध्यान दें कि ये दो विधियाँ सरणी को "जगह" में बदल देती हैं, जबकि array_mapसरणी की एक प्रतिलिपि बनाता है और लौटाता है, जो बहुत बड़े सरणियों के मामले में वांछनीय नहीं हो सकता है।


बहु-आयामी सरणियों के लिए, का उपयोग करें array_walk_recursive()mb_strtolower()इसलिए भी कि दुनिया बहुभाषी है।
कोडेअर्ट

8

आप array_map () का उपयोग कर सकते हैं, पहला पैरामीटर 'strtolower' (उद्धरण सहित) और दूसरा पैरामीटर $ निचला_केस_अरे में सेट करें।


5

यदि आप नेस्टेड सरणी में सभी मान कम करना चाहते हैं , तो निम्न कोड का उपयोग करें:

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

3

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
  )

)

2

array_map()सही तरीका है। लेकिन, यदि आप विशिष्ट सरणी मान या सभी सरणी मान को एक-एक करके कम करना चाहते हैं, तो आप उपयोग कर सकते हैं strtolower()

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

1

AIO समाधान / पुनरावर्ती / यूनिकोड | UTF-8 | Multibyte समर्थित!

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

1

आप यह नहीं कहते हैं कि क्या आपका सरणी बहुआयामी है। यदि यह है, तो array_map अकेले काम नहीं करेगा। आपको कॉलबैक विधि की आवश्यकता है। बहुआयामी सरणियों के लिए, 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

`$ रंग = सरणी ('ए' => 'ब्लू', 'बी' => 'ग्रीन', 'सी' => 'रेड');

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

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

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


-2

तुम भी के संयोजन का उपयोग कर सकते हैं array_flip()और array_change_key_case()इस पोस्ट को देखें


4
array_flip()यदि सरणी में डुप्लिकेट किए गए मान हैं, तो कॉल करने के बाद सरणी डेटा खो जाता है ।
पैंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.