একাধিক মাত্রিক অ্যারেতে রৈখিক অনুসন্ধান অ্যালগরিদমগুলি (উপরেরটি লিনিয়ারগুলি) সম্পর্কে সাবধান থাকুন কারণ তাদের মধ্যে জটিলতা রয়েছে কারণ এর গভীরতা পুরো অ্যারেটিকে অতিক্রম করার জন্য প্রয়োজনীয় পুনরাবৃত্তির সংখ্যা বৃদ্ধি করে। উদাহরণ:
array(
[0] => array ([0] => something, [1] => something_else))
...
[100] => array ([0] => something100, [1] => something_else100))
)
আপনি যা সন্ধান করছেন তা সন্ধান করতে সর্বাধিক 200 পুনরাবৃত্তি গ্রহণ করতে হবে (যদি সূচ [100] [1] এ থাকত), উপযুক্ত অ্যালগরিদম সহ।
এই ক্ষেত্রে লিনিয়ার অ্যালগোরিদমগুলি ও (এন) এ সঞ্চালিত হয় (পুরো অ্যারেতে সামগ্রীর সংখ্যার ক্রম অর্ডার করে), এটি দরিদ্র, একটি মিলিয়ন এন্ট্রি (উদাহরণস্বরূপ 1000x100x10 অ্যারে) সূগুলি সন্ধানের জন্য গড়ে 500,000 পুনরাবৃত্তি গ্রহণ করবে। এছাড়াও আপনি যদি আপনার বহুমাত্রিক অ্যারের কাঠামো পরিবর্তন করার সিদ্ধান্ত নিয়েছেন তবে কি হবে? এবং পিএইচপি যদি আপনার গভীরতা 100 এর বেশি হয় তবে পুনরাবৃত্তির একটি অ্যালগরিদম বের করে আনতে পারে Computer কম্পিউটার বিজ্ঞান আরও ভাল করতে পারে:
যেখানে সম্ভব, সর্বদা একাধিক মাত্রিক অ্যারের পরিবর্তে অবজেক্টগুলি ব্যবহার করুন:
ArrayObject(
MyObject(something, something_else))
...
MyObject(something100, something_else100))
)
এবং তাদের বাছাই করতে এবং এটির জন্য একটি কাস্টম তুলক ইন্টারফেস এবং ফাংশন প্রয়োগ করুন:
interface Comparable {
public function compareTo(Comparable $o);
}
class MyObject implements Comparable {
public function compareTo(Comparable $o){
...
}
}
function myComp(Comparable $a, Comparable $b){
return $a->compareTo($b);
}
আপনি uasort()
একটি কাস্টম তুলককে কাজে লাগাতে ব্যবহার করতে পারেন , যদি আপনি দু: সাহসিক কাজ অনুভব করেন তবে আপনার নিজের বস্তুর জন্য তাদের নিজস্ব সংগ্রহগুলি প্রয়োগ করা উচিত যা তাদের সাজান এবং পরিচালনা করতে পারে (আমি সর্বদা খুব কমপক্ষে একটি অনুসন্ধান ফাংশন অন্তর্ভুক্ত করতে অ্যারেঅবজেক্টকে প্রসারিত করি)।
$arrayObj->uasort("myComp");
একবার তাদের বাছাই করা হয়ে গেলে (uasort হল ও (এন লগ এন), যা এটি সালিশী ডেটা ওভার হিসাবে ভাল হয়), বাইনারি অনুসন্ধান ও (লগ এন) সময়ে ক্রিয়াকলাপ করতে পারে, অর্থাত্ একটি মিলিয়ন এন্ট্রিগুলিতে কেবল ~ 20 পুনরাবৃত্তি লাগে অনুসন্ধান করুন। যতদূর আমি সচেতন কাস্টম তুলনাকারী বাইনারি অনুসন্ধান পিএইচপি তে প্রয়োগ করা হয়নি ( array_search()
প্রাকৃতিক ক্রম ব্যবহার করে যা বস্তুর রেফারেন্সগুলিতে তাদের সম্পত্তি হিসাবে কাজ করে না), আপনাকে নিজের মতো করে নিজের মতো করে প্রয়োগ করতে হবে।
এই পদ্ধতির আরও দক্ষ (আরও গভীরতা নেই) এবং আরও গুরুত্বপূর্ণভাবে সার্বজনীন (আপনি ইন্টারফেস ব্যবহার করে তুলনীয়তা চাপিয়ে নিচ্ছেন) যেহেতু বস্তুগুলি কীভাবে সাজানো হয় তা নির্ধারণ করে, সুতরাং আপনি কোডটিকে অসীমভাবে পুনর্ব্যবহার করতে পারেন। অনেক ভাল =)
$key
থাকা না থাকলে "দক্ষ" উত্তর ত্রুটিটি খুঁজে পাবে ? এটা কি আরও ভাল হবেif (array_key_exists($key, $array) && $array[$key] == $value) {
?