Avatar ·

كيف تتحقق مما إذا كانت المصفوفة في PHP ترابطية أم متسلسلة (مفهرسة)؟

مرحبًا بالجميع! لقد بدأت للتو في تعلم PHP وواجهت موقفًا غير واضح. أعلم أن هناك نوعين من المصفوفات في PHP: العادية (المتسلسلة) بمفاتيح رقمية تبدأ من 0، والترابطية حيث المفاتيح عبارة عن سلاسل نصية. لكن في الواقع كل شيء مختلط: قد تبدأ المصفوفة بمفتاح 0، ثم يأتي سلسلة نصية، ثم رقم مرة أخرى. أو قد تكون المفاتيح أرقامًا ولكن ليس بالترتيب (مثل 0، 5، 10). أحتاج إلى كتابة دالة تعالج البيانات من النموذج. إذا كانت المصفوفة متسلسلة (أي المفاتيح تأتي بالترتيب: 0، 1، 2، 3...)، أطبق منطقًا واحدًا. إذا كانت ترابطية (مثل المفاتيح 'name'، 'email'، 'age') — أطبق منطقًا آخر. لكن الفحص القياسي عبر `array_keys()` لا يعطي إجابة واضحة، لأن مصفوفة مثل `[0 => 'a', 2 => 'b']` هي رسميًا رقمية ولكنها غير متسلسلة. هذا مثال يربكني: ```php $arr1 = ['a', 'b', 'c']; // متسلسلة $arr2 = ['name' => 'John', 'age' => 30]; // ترابطية $arr3 = [0 => 'x', 1 => 'y', 3 => 'z']; // رقمية ولكن مع فجوة ```