পিএইচপি - একটি অ্যারেতে দুটি অ্যারে মার্জ করা হচ্ছে (ডুপ্লিকেটগুলিও সরান)


109

হাই, আমি দুটি অ্যারে মার্জ করার চেষ্টা করছি এবং চূড়ান্ত অ্যারে থেকে সদৃশ মানগুলিও সরাতে চাই।

এখানে আমার অ্যারে 1:

Array
    (
    [0] => stdClass Object
    (
    [ID] => 749
    [post_author] => 1
    [post_date] => 2012-11-20 06:26:07
    [post_date_gmt] => 2012-11-20 06:26:07
)

এবং এটি আমার অ্যারে 2:

Array
(
[0] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

)

আমি array_mergeউভয় অ্যারেকে এক অ্যারেতে মার্জ করার জন্য ব্যবহার করছি । এটি এভাবে আউটপুট দিচ্ছে

Array
(
[0] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

[1] => stdClass Object
(
[ID] => 749
[post_author] => 1
[post_date] => 2012-11-20 06:26:07
[post_date_gmt] => 2012-11-20 06:26:07

)

আমি এই সদৃশ এন্ট্রিগুলি সরাতে চাই বা আমি মার্জ করার আগে এগুলি সরাতে পারি ... প্লিজ সহায়তা .. ধন্যবাদ !!!!!!!


কারণ আপনি $ অ্যারে 1 [0] এবং $ অ্যারে 2 [0] $ অ্যারে 1 এবং $ অ্যারে 2 একত্রিত করতে চান না। প্রতিটি অ্যারের প্রথম আইটেমটিতে অ্যারে_মার্জ চালানোর চেষ্টা করুন
বিগি

অ্যারে ডায়নামিক .. তাই এটি সর্বদা $ অ্যারে 1 [0] এবং $ অ্যারে 2 [0]
রবি

এমন কিছু আছে যা দিয়ে আমি অ্যারের ভিতরে প্রতিটি বস্তুর আইডি তুলনা করতে পারি ???
রবি

1
আমার প্রথম মন্তব্যটি ভুলে যান যা কার্যকর হবে না কারণ আপনি যা মার্জ করার চেষ্টা করছেন তা অ্যারে নয় তবে অবজেক্ট। আপনি এটি ম্যানুয়ালি করতে হবে
Bgi

উত্তর:


235
array_unique(array_merge($array1,$array2), SORT_REGULAR);

http://se2.php.net/manual/en/function.array-unique.php


5
@ হেমন্ত এক্সপোরস> এর সাথে SORT_REGULAR এটি এই ত্রুটিটি দিচ্ছে:Catchable fatal error: Object of class stdClass could not be converted to string
রবি

4
এটি লক্ষণীয় যে অ্যারে_উইনক ফিল্টার করা অ্যারে প্রদান করে (পাশ করা অ্যারে প্যারামিটারে সরাসরি অভিনয় করার পরিবর্তে) যাতে ফলটি ব্যবহার করার আগে আপনাকে সংরক্ষণ করতে হবে
মাইক

7
ডিফল্টরূপে অ্যারে_উনিক অ্যারে মানগুলি স্ট্রিং হিসাবে ব্যবহার করার চেষ্টা করে। সুতরাং @ রাবি ত্রুটিটি প্রবেশ করল। যদি আপনার অ্যারে কেবল স্ট্রিং হয় তবে আপনার তৃতীয় আর্গুমেন্টের প্রয়োজন হবে না। যদি এটি কোনও স্ট্রিং না হয় বা বিষয়বস্তুগুলি স্পষ্টভাবে কোনও স্ট্রিংয়ে কাস্ট করা না যায় তবে আপনার SORT_REGULAR যুক্তি লাগবে।
ডেভিড বাউকুম

@ হেমন্তওয়াগ07 অ্যারে অবজেক্টের জন্য, আমরা যদি SORT_REGULARএটি ব্যবহার না করিRecoverable fatal error: Object of class stdClass could not be converted to string in...<path to file>
ম্যাপমালিথ

7

এটি দুটি অ্যারে একীভূত করবে এবং সদৃশ সরিয়ে ফেলবে

<?php
 $first = 'your first array';
 $second = 'your second array';
 $result = array_merge($first,$second);
 print_r($result);
 $result1= array_unique($result);
 print_r($result1);
 ?>

এই লিঙ্কটি লিঙ্ক 1 চেষ্টা করুন


7

ইতিমধ্যে উল্লিখিত হিসাবে, অ্যারে_উনিক () ব্যবহার করা যেতে পারে তবে কেবলমাত্র সহজ ডেটা নিয়ে কাজ করার সময়। অবজেক্টগুলি পরিচালনা করা এত সহজ নয়।

পিএইচপি যখন অ্যারেগুলিকে একীভূত করার চেষ্টা করে তখন এটি অ্যারে সদস্যদের মানগুলির তুলনা করার চেষ্টা করে। সদস্য যদি কোনও বস্তু হয় তবে এটি এর মান পেতে পারে না এবং পরিবর্তে স্প্লাল হ্যাশ ব্যবহার করে। এখানে spl_object_hash সম্পর্কে আরও পড়ুন।

আপনার দুটি জিনিস, খুব একই বর্গের উদাহরণ এবং যদি তাদের মধ্যে একটির সাথে অন্যটির উল্লেখ না হয় তবে কেবল আপনার দুটি বৈশিষ্ট্যই শেষ হয়ে যাবে, তাদের সম্পত্তিগুলির মূল্য নির্বিশেষে।

মার্জ করা অ্যারের মধ্যে আপনার কোনও সদৃশ নেই তা নিশ্চিত হওয়ার জন্য, ইমো আপনার নিজেরাই কেসটি পরিচালনা করবেন।

এছাড়াও আপনি যদি বহুমাত্রিক অ্যারেগুলিকে একীভূত করতে চলেছেন তবে অ্যারে_মিটার (রিভার্স) () এর উপরে অ্যারে_মিটার_সেকারসিভ () ব্যবহার করে বিবেচনা করুন ।


4

ব্যবহার করার চেষ্টা করুন array_unique()

এটি আপনার অ্যারের তালিকার ভিতরে ডুপ্লিকেট করা ডেটা এলিনেট করে ..


0

দুটি অ্যারে মার্জ করলে সেই সদৃশটি মুছে ফেলা হবে না আপনি দুটি অ্যারে থেকে অনন্য হয়ে উঠতে নীচের উদাহরণটি চেষ্টা করতে পারেন

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");

$result=array_diff($a1,$a2);
print_r($result);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.