آرایه انجمنی Associative array
آرایه انجمنی یا Associative array چیست؟
آرایه انجمنی (Associative array) در زبانهای برنامهنویسی یک نوع دادهی انتزاعی است متشکل از مجموعهای از دوتاییهای (کلید، مقدار) یا (Key, Value) به طوری که هر مقدار با یک کلید در تناظر میباشد و کلیدهای موجود در مجموعه نیز تکراری نباشند. آرایههای انجمنی با نامهایی همچون نقشه (Map) و لغت نامه (Dictionary) نیز شناخته میشوند.
در آرایههای انجمنی تناظر میان کلیدها و مقادیر اصطلاحا اتصال (Binding) نامیده میشود. مهمترین و رایجترین اعمالی که روی این نوع داده قابل انجام میباشد عبارت است از افزودن (Insert یا Add) یک جفت کلید و مقدار به مجموعه، حذف (Remove یا Delete) یک جفت کلید و مقدار، تغییر مقدار تخصیص یافته به یک کلید و یافتن مقدار متناظر با یک کلید. برای افزودن یک جفت کلید و مقدار یا تغییر مقدار متناظر با یک کلید لازم است هم کلید و هم مقدار متناظر با آن در قالب آرگومان مشخص شود اما حذف یا یافتن مقدار متناظر با یک کلید تنها مبتنی بر کلید انجام میشود.
دو روش مهم برای ایجاد آرایههای انجمنی، استفاده از جدول درهم سازی (Hash table) و درخت جستجو (Search tree) میباشد. بسیاری از زبانهای برنامهنویسی امروزی از آرایههای انجمنی تحت عناوین متفاوتی در قالب کتابخانههای استاندارد خود پشتیبانی میکنند (برای مثال در بسیاری از زبانها از جمله C++، آرایههای انجمنی با عنوان map شناخته میشوند).
مالتیمپ (multimap) ها نوع دادهی مرتبط دیگری هستند که مفهوم آرایهی انجمنی را توسعه داده و اجازه میدهند چندین مقدار به یک کلید معین تخصیص داده شود. در نقشههای دوطرفه (Bidirectional map) نیز اتصال در هر دو جهت معنا مییابد و در آنها علاوه بر اعمال معمول آرایههای انجمنی، امکان یافتن کلید متناظر با یک مقدار نیز وجود دارد.
در مثال زیر نحوهی ایجاد یک آرایه انجمنی به نام $weight در زبان PHP نمایش داده شده است. در این نمونه، 3 جفت کلید و مقدار در مجموعه مشاهده میشود که عبارات Alex و Rory و Paul کلیدهای این آرایه انجمنی هستند و مقادیر 40 و 50 و 45 به ترتیب به آنها تخصیص داده شده است. در این مثال عبارت $weight[‘Paul’] مقدار متناظر با کلید Paul یعنی 45 را خواهد داشت.
$weight = array("Alex"=>"40", "Rory"=>"50", "Paul"=>"45"); echo "Paul weighs" . $weight['Paul'] . " kilograms.";
پیوندهای پیشنهادی تک دیک