পিএইচপি তে অ্যারে জন্য অপারেটর?


192
$test = array('hi');
$test += array('test','oh');
var_dump($test);

+পিএইচপি-তে অ্যারের অর্থ কী ?


5
আমি লক্ষ্য করি আপনার প্রশ্নটি ছিল +=এবং গ্রহণযোগ্য উত্তরটি ছিল +। আমার পরীক্ষা থেকে তারা একই আচরণ করে বলে মনে হচ্ছে।
— ব্যবহারকারী 151841

7
ডকুমেন্টেশন চমত্কার আপ এটি অঙ্ক
— artfulrobot


@ রবিবিভারিল - এই প্রশ্নটিই সেই প্রশ্নটি উল্লেখ করা হয়। তাই আপনি যদি কিছু রেফারেন্স প্রশ্ন সদৃশ
— icc97

2
অন্য কেউ সামান্য আতংকিত অ্যারের সংযুক্তকরণের যেমন একটি মৌলিক জিনিস মাধ্যমে পুনর্গঠন করা রয়েছে array_merge? এটির মতো যদি অ্যারেগুলি ডিফল্টরূপে সংঘবদ্ধ অ্যারে হয় এবং সংখ্যাসূচক অ্যারেগুলি দ্বিতীয় শ্রেণির নাগরিক হয়।
— icc97

উত্তর:


271

ভাষা অপারেটরদের উপর পিএইচপি ম্যানুয়াল থেকে উদ্ধৃতি দেওয়া

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

আপনি যদি তাই

$array1 = ['one',   'two',          'foo' => 'bar'];
$array2 = ['three', 'four', 'five', 'foo' => 'baz']; 

print_r($array1 + $array2);

তুমি পাবে

Array
(
    [0] => one   // preserved from $array1 (left-hand array)
    [1] => two   // preserved from $array1 (left-hand array)
    [foo] => bar // preserved from $array1 (left-hand array)
    [2] => five  // added from $array2 (right-hand array)
)

সুতরাং এর যুক্তি +নিম্নলিখিত স্নিপেটের সমতুল্য:

$union = $array1;

foreach ($array2 as $key => $value) {
    if (false === array_key_exists($key, $union)) {
        $union[$key] = $value;
    }
}

আপনি যদি সি-লেভেল বাস্তবায়নের বিবরণে আগ্রহী হন


দ্রষ্টব্য, এটি অ্যারেগুলিকে +কীভাবে array_merge()একত্রিত করবে তার থেকে পৃথক :

print_r(array_merge($array1, $array2));

আপনাকে দিতে হবে

Array
(
    [0] => one   // preserved from $array1
    [1] => two   // preserved from $array1
    [foo] => baz // overwritten from $array2
    [2] => three // appended from $array2
    [3] => four  // appended from $array2
    [4] => five  // appended from $array2
)

আরও উদাহরণের জন্য লিঙ্কযুক্ত পৃষ্ঠাগুলি দেখুন।


1
পিএইচপি.এন. দ্বারা উত্পাদিত @ পেসারিয়ার পিএইচপি-তে কোনও আনুষ্ঠানিক ধারণা নেই, তবে হুডের নীচে +এবং array_mergeকল উভয়ই zend_hash_merge। এটিও প্রত্যাশিত, যেহেতু পিএইচপি-তে অ্যারেগুলি অর্ডার করা হ্যাশ মানচিত্র হিসাবে প্রয়োগ করা হয়।
— বিশপ

1
@ পেসারিয়ার পিএইচপিএন অনলাইন ডক্স হ'ল একটি নির্দিষ্টকরণের নিকটতম রেকর্ড, তবে আইএমও those ডকসটি সত্য সত্যের চেয়ে কম পড়ে: একটি, কোডটি লেখার পরে সেগুলি আপডেট করা হয়েছে; দুই, এগুলি প্রতিটি বিশেষ ব্যবহারের জন্য লেখা হয় না।
— বিশপ

14
পিএইচপি এর আচরণ +এবং array_mergeবিকৃত এবং অনিচ্ছুক। সরল-ইংলিশ পাঠটি স্বজ্ঞাতভাবে আপনাকে 'যোগ' বা 'মার্জিং' অ্যারেগুলি যা বলবে তার থেকে এগুলি বিপরীত're অন্যান্য ভাষা / গ্রন্থাগারগুলি +তালিকাগুলি (উদাহরণস্বরূপ পাইথনে) এবং "একত্রিত" ফাংশনগুলিকে এক বস্তুর থেকে অন্য বস্তুর (যেমন ল্যাডাশে) যোগ করার জন্য ব্যবহার করে। তবুও পিএইচপি এ এটি অন্যভাবে; array_mergeতালিকার মতো অ্যারেগুলিকে সংযুক্ত করার জন্য ব্যবহার করা যেতে পারে তবে তা +পারে না। বিপরীতে array_merge, +সর্বদা অপারেশন সম্পাদন করে যা অন্য কোনও ভাষায় "মার্জ" বলে।
— মার্ক আমেরিকা

1
@ icc97- এ তারা সত্যিই কেবল হ্যাশম্যাপস। দেখুন nikic.github.io/2014/12/22/…
— গর্ডন

2
আমি একটি উপনাম তৈরি করতে পারে কিনা তা দেখার জন্য একটি বাগ জমা দেওয়ার চেষ্টা করেছি । array_concatarray_merge
— icc97

18

এটি ব্যবহারের জন্য আমি যে সর্বোত্তম উদাহরণটি পেয়েছি তা হ'ল একটি কনফিগার অ্যারে।

$user_vars = array("username"=>"John Doe");
$default_vars = array("username"=>"Unknown", "email"=>"no-reply@domain.com");

$config = $user_vars + $default_vars;

$default_vars, যেমন প্রস্তাব দেওয়া হয়, ডিফল্ট মান জন্য অ্যারে। $user_varsঅ্যারে মান সংজ্ঞায়িত ওভাররাইট করবে $default_vars। যে কোনও অনুপস্থিত মান $user_varsএখন ডিফল্ট ভার্স $default_vars।

এটি হবে print_r:

Array(2){
    "username" => "John Doe",
    "email" => "no-reply@domain.com"
}

আশা করি এটা কাজে লাগবে!


6

এই অপারেটরটি দুটি অ্যারের সংশ্লেষ নিয়ে যায় (অ্যারে_মেজরের অনুরূপ, অ্যারে_ডর্মাইয়ারের সদৃশ কীগুলি ওভাররাইট করা বাদে)।

অ্যারে অপারেটরগুলির জন্য ডকুমেন্টেশন এখানে পাওয়া যায় ।


1
এখানে নতুনদের জন্য সতর্কতার একটি শব্দ, অ্যারেরগুলির কোনও শূন্য হলে অপারেশনের ফলাফল শূন্য । কেউ কেউ এটি ধরে নেওয়ার বিষয়ে ধারণা করছেন না যেহেতু এটি ইউনিয়ন অপারেশন, ফলস্বরূপ (নাল-নাল) অ্যারে যদি তাদের কোনওটি শূন্য হয় তবেই হবে। তবে, এটি ঠিক রাখে যদি অ্যারেগুলির মধ্যে একটি শূন্য অ্যারে হয়।
— সন্দীপন নাথ

সুতরাং, একটি ভাল অনুশীলন হিসাবে, আমি মনে করি, আমাদের ইনপুট অ্যারেগুলি খালি অ্যারে হিসাবে শুরু করা উচিত। তোমরা কি বলো?
— সন্দীপন নাথ

5

সংখ্যাসূচক কীগুলির সাথে যত্নশীল, যদি সেগুলি সংরক্ষণ করা উচিত বা আপনি যদি কিছু ছেড়ে দিতে চান না

$a = array(2 => "a2", 4 => "a4", 5 => "a5");
$b = array(1 => "b1", 3 => "b3", 4 => "b4");

মিলন

print_r($a+$b);
Array
(
    [2] => a2
    [4] => a4
    [5] => a5
    [1] => b1
    [3] => b3
)

একত্রিত করা

print_r(array_merge($a, $b));
Array
(
    [0] => a2
    [1] => a4
    [2] => a5
    [3] => b1
    [4] => b3
    [5] => b4
)

3

+অপারেটর হিসাবে একই ফল array_replace () । তবে যেহেতু অপারেটরের যুক্তিগুলি বিপরীত রয়েছে, ফলস্বরূপ অ্যারের ক্রমও ভিন্ন হতে পারে।

এই পৃষ্ঠা থেকে অন্য একটি উদাহরণ প্রসারিত:

$array1 = array('one', 'two', 'foo' => 'bar');
$array2 = array('three', 'four', 'five', 'foo' => 'baz'); 

print_r($array1 + $array2);
print_r(array_replace($array2, $array1)); //note reversed argument order

আউটপুট:

Array
(
    [0] => one   // preserved from $array1
    [1] => two   // preserved from $array1
    [foo] => bar // preserved from $array1
    [2] => five  // added from $array2
)
Array
(
    [0] => one   // preserved from $array1
    [1] => two   // preserved from $array1
    [2] => five  // added from $array2
    [foo] => bar // preserved from $array1
)

+চশমা দ্বারা গ্যারান্টিযুক্ত ক্রম কি ? কি হবে array_replace?
— পেসারিয়ার

1
  1. অ্যারে প্লাস অপারেশন সমস্ত অ্যারেকে অ্য্যাসোস অ্যারে হিসাবে বিবেচনা করে।
  2. প্লাস চলাকালীন কী বিরোধ থাকলে, বাম (পূর্ববর্তী) মান রাখা হবে

বিষয়গুলি পরিষ্কার করার জন্য আমি নীচের কোডটি পোস্ট করি।

$a + $b = array_plus($a, $b)

function array_plus($a, $b){
    $results = array();
    foreach($a as $k=>$v) if(!isset($results[$k]))$results[$k] = $v;
    foreach($b as $k=>$v) if(!isset($results[$k]))$results[$k] = $v;
    return $results;
}

@ টমলিনের কোড রান আপনার প্রমাণ "অ্যারে প্লাস অপারেশন সমস্ত অ্যারেকে এসোসিয়ে অ্যারে হিসাবে বিবেচনা করে " প্রমাণ করে বলে মনে হচ্ছে is
— পেসারিয়ার

@ পেসারিয়ার সেই কীটিও পূর্ণসংখ্যার হতে পারে।
— হিটেশ

-2

এটি আগেরটিতে নতুন অ্যারে সংযুক্ত করবে।


-4
$var1 = "example";
$var2 = "test";
$output = array_merge((array)$var1,(array)$var2);
print_r($output);

অ্যারে ([0] => উদাহরণ [1] => পরীক্ষা)


1
এই থ্রেডটিতে কয়েকবার উল্লেখ করা হয়েছে যে অ্যারে_মার্জ () কীভাবে একত্রিত হয় না।
— ডাবলজোশ

@ ডাবলজোশ, "একত্রিত"? অর্থ?
— পেসারিয়ার

1
তারা একই নয়।
— ডাবলজোশ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.