কীভাবে অ্যারে মানগুলি পিএইচপি-র ছোট হাতের মধ্যে রূপান্তর করতে?


132

আমি কীভাবে অ্যারে থেকে সমস্ত মান পিএইচপি-র ছোট হাতের মধ্যে রূপান্তর করতে পারি?

এরকম কিছু 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
আপনাকে ভালবাসি, আপনাকে ভালবাসি, আপনাকে ভালোবাসি
ক্রেগ ওয়েন

একটি দুর্দান্ত একক উত্তর। ধন্যবাদ
জোসে আরিম

@ ভিট ইউজmb_strtolower
ইউজার 3841429

@ user3841429 mb_strtolower সাহায্য করেনি। PHP7.2।
ভিট

2
@ ভিট আপনি কি এটি নীচের মত ব্যবহার করেছেন? $yourArray = array_map('mb_strtolower', $yourArray);আমি সবেমাত্র যাচাই করেছি এবং এটি সিরিলিক
ইউজার 3841429

27

কেবল সম্পূর্ণতার জন্য: আপনি এটি ব্যবহার করতে পারেন array_walk:

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

পিএইচপি ডক্স থেকে:

যদি কলব্যাক অ্যারের প্রকৃত মানগুলির সাথে কাজ করা প্রয়োজন, তবে রেফারেন্স হিসাবে কলব্যাকের প্রথম পরামিতিটি নির্দিষ্ট করুন। তারপরে, সেই উপাদানগুলিতে যে কোনও পরিবর্তন আসল অ্যারে নিজেই করা হবে।

অথবা সরাসরি রেফারেন্স ব্যবহার করে foreachলুপের মাধ্যমে :

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

নোট করুন যে এই দুটি পদ্ধতি অ্যারেটিকে "স্থানে" পরিবর্তন করে, যেখানে array_mapঅ্যারের একটি অনুলিপি তৈরি করে এবং প্রদান করে, যা খুব বড় অ্যারের ক্ষেত্রে পছন্দসই হতে পারে না।


বহুমাত্রিক অ্যারেগুলির জন্য, ব্যবহার করুন array_walk_recursive()। এছাড়াও mb_strtolower()কারণ বিশ্ব বহুভাষী হয়।
কোডেয়ার্ট

8

আপনি অ্যারে_ম্যাপ () ব্যবহার করতে পারেন, প্রথম প্যারামিটারটি 'স্ট্র্টলওয়ার' (কোটস সহ) এবং দ্বিতীয় প্যারামিটারটি $ নিম্ন_কেন্দ্র_আরেতে সেট করতে পারেন।


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

এআইও সমাধান / পুনরাবৃত্ত / ইউনিকোড | ইউটিএফ -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'
    ]
]

1

আপনার অ্যারেটি বহুমাত্রিক হলে আপনি বলবেন না। যদি তা হয় তবে অ্যারে_ম্যাপটি একা কাজ করবে না। আপনার কলব্যাক পদ্ধতি দরকার। বহুমাত্রিক অ্যারেগুলির জন্য, অ্যারে_চেঞ্জ_কি_ কেস চেষ্টা করুন ।

// 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

; $ রঙ = অ্যারে ('এ' => 'নীল', 'বি' => 'সবুজ', 'সি' => 'লাল');

t স্ট্রোলটার = অ্যারে_ম্যাপ ('স্ট্র্টলভার', $ রঙ);

t strtoupper = অ্যারে_ম্যাপ ('স্ট্র্টউপার', $ রঙ);

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


-2

আপনি array_flip()এবং এর সংমিশ্রণটিও ব্যবহার করতে পারেন array_change_key_case()এই পোস্টটি দেখুন


4
array_flip()অ্যারেতে ডুপ্লিকেট মান যুক্ত থাকলে কল করার পরে অ্যারের ডেটা নষ্ট হয় ।
পাইং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.