أول مفتاح في مصفوفة PHP: 5 طرق عملية للحصول عليه

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

أول مفتاح في مصفوفة PHP الترابطية: مشكلة تحيّر حتى المحترفين

\n\n

هل سبق لك أن واجهت موقفًا تحتاج فيه إلى الحصول على أول مفتاح في مصفوفة PHP الترابطية، لكنك لم تعرف كيف تفعل ذلك بأناقة؟ هذا السؤال هو من أكثر الأسئلة شيوعًا على Stack Overflow (عشرات الآلاف من المشاهدات!). وليس من دون سبب: فالمهمة التي تبدو بسيطة للوهلة الأولى تخفي عدة مطبات.

\n\n

في هذه المقالة، سنستعرض 5 طرق مثبتة للحصول على أول مفتاح في مصفوفة PHP، من الطرق الكلاسيكية إلى الحديثة. ستتعرف على أي طريقة تختار بناءً على إصدار PHP، ونوع المصفوفة، ومهامك. هيا بنا!

\n\n

لماذا هذه مشكلة؟ خصائص المصفوفات الترابطية في PHP

\n\n

على عكس اللغات شديدة التحديد، المصفوفة الترابطية في PHP هي هجين: يمكن أن تكون قائمة وقاموسًا في نفس الوقت. يمكن أن تكون المفاتيح أرقامًا أو نصوصًا أو مختلطة. ويتم الحفاظ على الترتيب فقط من PHP 7.0+ في سيناريوهات معينة.

\n\n

لذلك، مجرد استخدام $array[0] ليس حلاً. ستحصل على القيمة المرتبطة بالمفتاح "0"، وليس العنصر الأول. نحن بحاجة تحديدًا إلى أول مفتاح في مصفوفة PHP، بغض النظر عن قيمته.

\n\n

الطريقة 1: array_key_first() — حديثة وسريعة (PHP 7.3+)

\n\n

بدءًا من PHP 7.3، ظهرت الدالة المدمجة array_key_first(). هذه هي الطريقة الأبسط والأكثر كفاءة للحصول على أول مفتاح في مصفوفة PHP الترابطية.

\n\n
<?php\n$user = [\n    'name' => 'آنا',\n    'email' => 'anna@example.com',\n    'role' => 'admin'\n];\n\n$firstKey = array_key_first($user);\necho $firstKey; // سيطبع: name\n?>
\n\n

المزايا:

\n
    \n
  • كود بسيط جدًا
  • \n
  • لا يغير المصفوفة الأصلية
  • \n
  • يعمل بسرعة O(1) — لا حاجة لنسخ المصفوفة
  • \n
\n\n

العيوب: يتطلب PHP 7.3 أو أحدث. إذا كان مشروعك على إصدار قديم، تابع القراءة.

\n\n

الطريقة 2: reset() + key() — كلاسيكية المجال

\n\n

هذا الثنائي من الدوال هو الطريقة الكلاسيكية للحصول على أول مفتاح في مصفوفة PHP، والتي تعمل على جميع الإصدارات. الدالة reset() تنقل المؤشر الداخلي للمصفوفة إلى العنصر الأول، بينما key() تُرجع مفتاحه.

\n\n
<?php\n$config = [\n    'database' => 'mysql',\n    'host' => 'localhost',\n    'port' => 3306\n];\n\n$firstKey = key(reset($config));\necho $firstKey; // سيطبع: database\n?>
\n\n

مهم! الدالة reset() تغيّر المؤشر الداخلي للمصفوفة. إذا كنت ستقوم بالتكرار على المصفوفة لاحقًا، فقد يؤدي ذلك إلى نتائج غير متوقعة. لتجنب الآثار الجانبية، استخدم نسخة من المصفوفة:

\n\n
<?php\n$firstKey = key(reset(array_slice($config, 0, 1)));\n?>
\n\n

لكن هذا أقل أناقة. للعمليات الفردية، هذا خيار ممتاز.

\n\n

الطريقة 3: array_keys() + [0] — واضحة ومفهومة

\n\n

إذا كنت لا تحتاج فقط إلى أول مفتاح في مصفوفة PHP، بل إلى جميع المفاتيح الأخرى أيضًا، فإن array_keys() هو خيارك. الدالة تُرجع مصفوفة بجميع المفاتيح، ونحن نأخذ العنصر الأول.

\n\n
<?php\n$fruits = [\n    'apple' => 'تفاحة',\n    'banana' => 'موز',\n    'cherry' => 'كرز'\n];\n\n$keys = array_keys($fruits);\n$firstKey = $keys[0] ?? null;\necho $firstKey; // سيطبع: apple\n?>
\n\n

المزايا: واضحة حتى للمبتدئين، ولا تغيّر المصفوفة الأصلية.

\n\n

العيوب: بالنسبة للمصفوفات الكبيرة، يتم إنشاء نسخة من جميع المفاتيح في الذاكرة. إذا كانت المصفوفة تحتوي على 100,000 عنصر، فهذا استهلاك إضافي.

\n\n

الطريقة 4: current() + reset() — بديل باستخدام المؤشر

\n\n

تشبه هذه الطريقة الطريقة 2، لكنها تستخدم current() للحصول على القيمة بدلاً من المفتاح. ومع ذلك، يمكننا الحصول على المفتاح أيضًا:

\n\n
<?php\n$settings = [\n    'theme' => 'داكن',\n    'language' => 'ar',\n    'timezone' => 'UTC'\n];\n\nreset($settings);\n$firstKey = key($settings);\necho $firstKey; // سيطبع: theme\n?>
\n\n

ملاحظة: هذه الطريقة تغيّر المؤشر الداخلي للمصفوفة، لذا استخدمها بحذر إذا كنت ستعمل على المصفوفة لاحقًا.

\n\n

الطريقة 5: foreach مع break — بسيطة ومرنة

\n\n

إذا كنت تفضل عدم استخدام دوال خاصة، يمكنك استخدام حلقة foreach مع break للحصول على أول مفتاح:

\n\n
<?php\n$data = [\n    'id' => 1,\n    'name' => 'محمد',\n    'age' => 30\n];\n\nforeach ($data as $key => $value) {\n    $firstKey = $key;\n    break;\n}\necho $firstKey; // سيطبع: id\n?>
\n\n

المزايا: لا تعتمد على إصدار PHP، ولا تغيّر المصفوفة الأصلية، ويمكنك بسهولة الحصول على القيمة الأولى أيضًا.

\n\n

العيوب: قد تكون أبطأ قليلاً من الطرق الأخرى للمصفوفات الكبيرة جدًا، لكنها مقبولة لمعظم الحالات.

\n\n

الخلاصة: أي طريقة تختار؟

\n\n

إليك ملخص سريع لمساعدتك في اختيار الطريقة المناسبة:

\n\n
    \n
  • إذا كنت تستخدم PHP 7.3+: استخدم array_key_first() — الأسرع والأبسط.
  • \n
  • إذا كنت تحتاج إلى توافق مع إصدارات أقدم: استخدم reset() + key() أو foreach + break.
  • \n
  • إذا كنت تريد كودًا واضحًا للمبتدئين: استخدم array_keys()[0].
  • \n
  • إذا كنت تتعامل مع مصفوفات ضخمة: تجنب array_keys() واستخدم array_key_first() أو reset() + key().
  • \n
\n\n

الآن أنت جاهز للتعامل مع أول مفتاح في مصفوفة PHP بكل ثقة. جرب هذه الطرق في مشروعك القادم، وشاركنا تجربتك في التعليقات!

المدونات

توصيات الكتب