পিএইচপি: অ্যারে এর শুরুতে মিশুক অ্যারে উপাদান সরান


96

কোন এসোসিয়েটিভ অ্যারের কোনও উপাদান অ্যারের শুরুতে নিয়ে যাওয়ার সর্বোত্তম পদ্ধতি কী হবে?

উদাহরণস্বরূপ, বলুন আমার কাছে নিম্নলিখিত অ্যারে রয়েছে:

$myArray = array(
    'two'   => 'Blah Blah Blah 2',
    'three' => 'Blah Blah Blah 3',
    'one'   => 'Blah Blah Blah 1',
    'four'  => 'Blah Blah Blah 4',
    'five'  => 'Blah Blah Blah 5',
);

আমি যা করতে চাই তা হল 'এক' উপাদানটিকে শুরুতে নিয়ে যাওয়া এবং নিম্নলিখিত অ্যারের সাথে শেষ করা:

$myArray = array(
    'one'   => 'Blah Blah Blah 1',
    'two'   => 'Blah Blah Blah 2',
    'three' => 'Blah Blah Blah 3',
    'four'  => 'Blah Blah Blah 4',
    'five'  => 'Blah Blah Blah 5',
);
php 

উত্তর:


183

আপনি +পরিচিত কী ( one) ব্যবহার করে একটি নতুন এসোসিয়েটিভ অ্যারেতে মূল অ্যারেটিতে যোগ দিতে অ্যারে ইউনিয়ন অপারেটর ( ) ব্যবহার করতে পারেন ।

$myArray = array('one' => $myArray['one']) + $myArray;
// or      ['one' => $myArray['one']] + $myArray;

অ্যারে কীগুলি অনন্য, সুতরাং এটি দুটি স্থানে থাকা পক্ষে অসম্ভব।

অ্যারে অপারেটরগুলিতে ডকটিতে আরও দেখুন :

+ অপারেটর বাম-হাতের অ্যারেতে যুক্ত ডান হাতের অ্যারেটি দেয়; উভয় অ্যারেতে থাকা কীগুলির জন্য, বাম-হাতের অ্যারের থেকে উপাদানগুলি ব্যবহার করা হবে এবং ডান হাতের অ্যারে থেকে মিলিত উপাদানগুলি উপেক্ষা করা হবে।


4
@ অ্যান্ড্রুটউবার না, আমি তা করি না তবে আমি কিছু পরীক্ষা করে দেখেছি যে এমিলের পদ্ধতির তুলনায় এটি 3x দ্রুত এবং মেমরির অর্ধেক বেশি লাগে takes আমি আরও দেখতে পেলাম যে অ্যারের শেষে একই উপাদানটি সরানোর চেয়ে 20% বেশি সময় লাগে takes
মার্ক ইরিচ

6

আপনার যদি সংখ্যাসূচক অ্যারে কী থাকে এবং অ্যারে কীগুলি পুনর্নির্মাণ করতে চান তবে এটি এটিকে দেওয়া ভাল array_merge:

$myArray = array_merge(array($key => $value) + $myArray );

2

কিছুটা দেরি হলেও কারওর প্রয়োজনে আমি এই ছোট স্নিপেটটি তৈরি করেছি।

function arr_push_pos($key, $value, $pos, $arr) 
{
    $new_arr = array();
    $i = 1;

    foreach ($arr as $arr_key => $arr_value) 
    {
        if($i == $pos) 
            $new_arr[$key] = $value;

        $new_arr[$arr_key] = $arr_value;

        ++$i;
    }

    return $new_arr;
}

আপনার প্রয়োজন অনুসারে এটি এডজাস্ট করুন, বা এটি ব্যবহার করুন এবং সরানোর জন্য সূচিটি আনসেট করুন। সহযোগী অ্যারেগুলির সাথেও কাজ করে।


একটি সংশোধন: $ নতুন_আর [$ আরআর_কি] = $ আগমন_মূল্য; হওয়া উচিত: যদি ($ আরআর_কি! = $ কী) $ নতুন_আর [$ আরআর_কি] = $ আগমন_মূল্য; তবে অন্যথায়: দুর্দান্ত! 1 উপরে.
nzn

1

এখানে আরও একটি সহজ ওয়ানলাইনার যা এটি ব্যবহার করে এটি সম্পন্ন করে array_splice():

$myArray = array_splice($myArray,array_search('one',array_keys($myArray)),1) + $myArray;

1

আপনার যদি 2 টি অ্যারে থাকে তবে 1 মতে উপাদানগুলির ২ য় অ্যারের শীর্ষে সরানোর উপাদান রয়েছে, আপনি ব্যবহার করতে পারেন

$result = \array_replace($ArrayToMoveToTop, $myArray);

এখানে একটি কোড নমুনা:

//source array    
$myArray = [
    'two' => 'Blah Blah Blah 2',
    'three' => 'Blah Blah Blah 3',
    'one' => 'Blah Blah Blah 1',
    'four' => 'Blah Blah Blah 4',
    'five' => 'Blah Blah Blah 5',
];
// set necessary order
$orderArray = [
    'one' => '',
    'two' => '',
];
//apply it
$result = \array_replace($orderArray, $myArray);
\print_r($result);

-1

অ্যারে_উনশিফ্টের জন্য পিএইচপি ম্যানুয়ালটির মন্তব্যে একটি ফাংশন রয়েছে যা একটি অ্যারের শুরুতে কী সহ একটি উপাদান যুক্ত করতে ব্যবহৃত হতে পারে:

function array_unshift_assoc(&$arr, $key, $val)
{
    $arr = array_reverse($arr, true);
    $arr[$key] = $val;
    return array_reverse($arr, true);
}

উপাদানটি আনসেট করুন এবং উপরের ফাংশনটি দিয়ে আবার এটি প্রবেশ করুন:

$tmp = $myArray['one'];
unset($myArray['one']);
$myArray = array_unshift_assoc($myArray, 'one', $tmp);

আপনার অ্যারেরটি কী দ্বারা বাছাই করতে এবং আপনার নিজস্ব বাছাইয়ের ক্রিয়াকলাপ সরবরাহ করতে আরও সাধারণ পদ্ধতির ব্যবহার হতে পারে ks


হাই - উত্তরের জন্য ধন্যবাদ, যদিও আমি কোনওভাবে অ্যারে বাছাই করতে চাই না। আমি একটি উপাদান কীটি জানতে সক্ষম হতে চাই এবং অ্যারের শুরুতে কেবল সেই স্পষ্ট উপাদানটি সরাতে চাই

আমার মনে হয় "=" একটি বাক্য গঠন ত্রুটি:return = array_reverse($arr, true);
মার্ক ইরিচ

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