قائمة طعام
مجاني
التسجيل
الصفحة الرئيسية  /  مشاكل/ أنواع المصفوفات في PHP. التصريح عن مصفوفة في php وأنواع المصفوفات والعمل مع عناصر php يتعمق في المصفوفة الترابطية

أنواع المصفوفات في PHP. التصريح عن مصفوفة في php وأنواع المصفوفات والعمل مع عناصر php يتعمق في المصفوفة الترابطية

المصفوفات النقابية

تستخدم المصفوفات البسيطة فقط المفاتيح لفصل العناصر وليس لها قيمة عملية:

في المصفوفات الترابطية ، تصف المفاتيح نوع القيمة التي تحتوي عليها - العمر والاسم وما إلى ذلك:

"فلاديمير" ، "العمر" => 20] ؛ ؟>

المصفوفات ثنائية الأبعاد ومتعددة الأبعاد

حتى الآن ، تعاملنا فقط مع المصفوفات أحادية البعد ، ولكن يمكننا أيضًا إنشاء مصفوفة ثنائية الأبعاد أو أي مصفوفة متعددة الأبعاد:

"فاسيا"] ؛ $ human ["hands"] = ["left"، "right"]؛ print_r ($ الإنسان) ؛ ؟>

كما ترى ، أنشأنا مصفوفة $ human ، ثم بداخلها أنشأنا مصفوفة أخرى $ human ["hands"]. النتيجة في المتصفح:

صفيف (=> Vasya => صفيف (=> يسار => يمين))

يمكننا إنشاء مصفوفات متعددة الأبعاد لأي تداخل. يبدو ناتج قيم مثل هذا المصفوفة كما يلي:

تطبيقات عملية للمصفوفات متعددة الأبعاد

تذكر في الدرس السابق أننا أردنا تجميع المنتجات وخصائصها؟ دعني أذكرك بالرمز الذي حصلنا عليه:

سامسونج جالاكسي"؛ $ product2_price = 5000 ؛ $ product2_quantity = صحيح ؛ $ product3_name =" نوكيا لوميا"؛ $ product3_price = 4000؛ $ product3_quantity = true؛؟>

يمكننا الآن وضع كل هذه المعلومات في متغير واحد. علاوة على ذلك ، سيكون كل منتج مصفوفة ترابطية ، وستكون جميع المنتجات داخل مصفوفة بسيطة:

"iPhone"، "price" => 5000، "quantity" => true]، ["name" => "Samsung Galaxy"، "price" => 5000، "quantity" => true] ، ["name" = > "Nokia Lumia"، "price" => 4000، "quantity" => true]]؛ ؟>

أو بدلا من ذلك:

"iPhone"، "price" => 5000، "quantity" => true] ؛ منتجات $ = ["name" => "Samsung Galaxy" ، "السعر" => 5000 ، "الكمية" => صحيح] ؛ $ products = ["name" => "Nokia Lumia"، "price" => 4000، "quantity" => true]؛ ؟>

سينتج عن كلا الخيارين:

صفيف (=> صفيف (=> iPhone => 5000 => 1) => صفيف (=> Samsung Galaxy => 5000 => 1) => صفيف (=> Nokia Lumia => 4000 => 1))

1. أنشئ مصفوفة $ city ، أضف مفتاح الاسم بأي قيمة لها. 2. إنشاء مجموعة فرعية من الشوارع مع أي شوارع عشوائية. يجب أن يكون لكل شارع اسم (اسم) وعدد من المنازل (عدد المباني) ، بالإضافة إلى مجموعة فرعية من أرقام المنازل (المباني القديمة) المراد هدمها.

مصفوفة متصلة- نوع بيانات لا غنى عنه يستخدم لوصف مجموعة من المفاتيح الفريدة والقيم الترابطية - هو العنصر الأساسي لجميع لغات البرمجة ، بما في ذلك PHP. على هذا النحو ، تلعب المصفوفات الترابطية دورًا مهمًا في برمجة الويب بحيث تتضمن PHP دعمًا للعديد من الوظائف والخصائص التي يمكنها معالجة مصفوفات البيانات بكل طريقة يمكن تصورها. يمكن أن يكون هذا الدعم الشامل مرهقًا للمطورين الذين يبحثون عن أكثر من غيرهم طرق فعالةإدارة المصفوفات في تطبيقاتهم. في هذه المقالة ، سأقدم 10 نصائح لمساعدتك على تقطيع وتمزيق بياناتك بعدد لا حصر له من الطرق.

1. إضافة عناصر المصفوفة.

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

$ capitals = array ("Alabama" => "Montgomery"، "Alaska" => "Juneau"، "Arizona" => "Phoenix")؛

يمكن إرفاق عناصر مصفوفة إضافية بالطريقة التالية:

عواصم $ ["Arkansas"] = "Little Rock"؛

إذا كنت تعمل باستخدام مصفوفات مرقمة وتفضل إلحاق عناصر (ببداية المصفوفة) وإرفاق عناصر باستخدام الوظيفة ذات التسمية الجيدة ، ففكر في الدالتين array_push () و array_unshift () (هذه الدوال لا تعمل مع المصفوفات الترابطية ).

2. إزالة عناصر المصفوفة

لإزالة عنصر من مصفوفة ، استخدم الدالة unset ():

Unset ($ capitals ["California"])؛

يمنحك العمل مع المصفوفات المرقمة بأرقام مزيدًا من الحرية عندما يتعلق الأمر بحذف عناصر المصفوفة. أي أنه يمكنك استخدام الدالتين array_shitt () و array_pop () لإزالة عنصر من بداية المصفوفة ونهايتها ، على التوالي.

3. مفاتيح التبديل والقيم

لنفترض أنك أردت إنشاء مصفوفة جديدة تسمى حالات $ ، مع استخدام عواصم الولايات كمؤشرات والحالات كقيم ترابطية. يمكن حل هذه المهمة (تبديل المفاتيح والقيم) بسهولة باستخدام وظيفة array_flip ():

$ capitals = array ("Alabama" => "Montgomery"، "Alaska" => "Juneau"، "Arizona" => "Phoenix")؛ الدول $ = array_flip (عواصم $) ؛ // $ States = array (// "Montgomery" => سلسلة "Alabama"، // "Juneau" => سلسلة "Alaska"، // "Phoenix" => سلسلة "Arizona" //)؛

4. دمج المصفوفات

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

$ stateCapitals = array ("Alabama" => "Montgomery"، "Alaska" => "Juneau"، "Arizona" => "Phoenix")؛ $ countryCapitals = array ("أستراليا" => "كانبرا"، "النمسا" => "فيينا"، "الجزائر" => "الجزائر")؛ $ capitals = array_merge ($ stateCapitals ، $ countryCapitals) ؛

5. تحرير قيم المصفوفة

افترض أن البيانات الموجودة في المصفوفة قد تحتوي على أخطاء تتعلق باستخدام الأحرف الكبيرة ، وتريد تصحيح هذه الأخطاء قبل إدخال البيانات في قاعدة البيانات. في هذه الحالة ، يمكنك استخدام الدالة array_map () لتطبيق دالة رد نداء على كل عنصر من عناصر المصفوفة:

دالة الأحرف الكبيرة ($ element) ($ element = strtolower ($ element) ؛ // تحويل جميع الأحرف إلى أحرف صغيرة إرجاع ucwords (عنصر $) ؛ // تحويل الحرف الأول من كل كلمة في السطر إلى الأحرف الكبيرة) صفيف ("Alabama" => "montGoMEry"، "Alaska" => "Juneau"، "Arizona" => "phoeniX")؛ Capitals = array_map ("capitalize"، $ capitals)؛

6. فرز المصفوفات حسب المفاتيح

تستخدم تطبيقات البطاقات التعليمية (البطاقات التعليمية - بطاقة بها نص وصورة (تُستخدم عند تدريس لغة أجنبية)) تقنيات تعليمية مختلفة ، بما في ذلك فرز البطاقات بطرق معينة ، على سبيل المثال ، أبجديًا. يمكنك فرز المصفوفات الترابطية حسب المفتاح باستخدام وظيفة ksort ():

$ capitals = array ("Arizona" => "Phoenix"، "Alaska" => "Juneau"، "Alabama" => "Montgomery")؛ ksort (عواصم $) ؛

7. عشوائية ترتيب المصفوفة

يمكنك تبديل العناصر بترتيب عشوائي باستخدام وظيفة خلط ورق اللعب ():

$ capitals = array ("Arizona" => "Phoenix"، "Alaska" => "Juneau"، "Alabama" => "Montgomery")؛ المراوغة (عواصم $)؛ foreach ($ capital as $ k => $ v) صدى "$ k: $ v
";

نتيجة:

انتبه إلى الإخراج لا نحصل على مصفوفة ترابطية ، بل مصفوفة رقمية.

إذا كنت تريد اختيار قيمة عشوائيًا بدلاً من اختيار المصفوفة عشوائيًا ، فاستخدم الدالة array_rand ().

8. تحديد ما إذا كانت المفاتيح والقيم موجودة

يمكنك استخدام الدالة in_array () لتحديد ما إذا كانت عناصر المصفوفة موجودة أم لا:

$ capitals = array ("Arizona" => "Phoenix"، "Alaska" => "Juneau"، "Alabama" => "Montgomery")؛ if (in_array ("Juneau"، $ capitals)) (صدى "Exists!"؛) else (الصدى "غير موجود!" ؛)

إن القدرة على تحديد ما إذا كانت مفاتيح الصفيف موجودة أم لا. يتم تنفيذه باستخدام الدالة array_key_exists ():

$ capitals = array ("Arizona" => "Phoenix"، "Alaska" => "Juneau"، "Alabama" => "Montgomery")؛ if (array_key_exists ("Alaska"، $ capitals)) (صدى "Key موجود!" ؛) else (صدى "المفتاح غير موجود!" ؛)

9. البحث عن مجموعة

قد ترغب في توفير محرك بحث لبطاقتك التعليمية حتى يتمكن المستخدمون من العثور بسهولة على الولاية المرتبطة بعاصمة معينة. يمكن القيام بذلك باستخدام دالة array_search () (تبحث هذه الوظيفة في المصفوفة مجموعة القيمةوإرجاع المفتاح المقابل):

$ capitals = array ("Arizona" => "Phoenix"، "Alaska" => "Juneau"، "Alabama" => "Montgomery")؛ $ state = array_search ("Juneau"، $ capitals)؛ // $ state = "ألاسكا"

10. مكتبة PHP القياسية

توفر مكتبة PHP القياسية (SPL) للمطورين عددًا مناسبًا من هياكل البيانات والواجهات والاستثناءات والخصائص الأخرى التي اعتادت أن تكون لغة PHPلا يمكن أن يتباهى. من بين هذه الخصائص القدرة على تكرار (تكرار) مصفوفة باستخدام بناء جملة موجه للكائنات.

$ capitals = array ("Arizona" => "Phoenix"، "Alaska" => "Juneau"، "Alabama" => "Montgomery")؛ arrayObject $ = new ArrayObject (عواصم $)؛ foreach ($ arrayObject كـ $ state => $ capital) (printf ("رأس مال٪ s هو٪ s
"، $ state، $ capital) ؛) // عاصمة ولاية أريزونا فينيكس // عاصمة ألاسكا جونو // عاصمة ألاباما مونتغمري

هذه مجرد واحدة من الميزات الرائعة المضمنة في SPL. تحقق من وثائق PHP لمزيد من المعلومات.

يمكن أن تحتوي عناصر المصفوفة في PHP على قيم من أي نوع ، مثل الأرقام والسلاسل والكائنات. يمكن أن تحتوي أيضًا على مصفوفات أخرى ، مما يعني في الواقع إنشاء متعدد الأبعادأو متداخلةمجموعة مصفوفة.

الخامس هذا الدرستعتبر مصفوفات PHP متعددة الأبعاد (المتداخلة). يشرح كيفية إنشائها وكيفية معالجتها وكيفية تكرارها عبر مصفوفة متعددة الأبعاد بالكامل في PHP.

كيفية إنشاء مصفوفة متعددة الأبعاد

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

على سبيل المثال:

$ myArray = مجموعة (صفيف (قيمة 1 ، قيمة 2 ، قيمة 3) ، صفيف (قيمة 4 ، قيمة 5 ، قيمة 6) ، صفيف (قيمة 7 ، قيمة 8 ، قيمة 9)) ؛

المثال أعلاه ينشئ مصفوفة ثنائية الأبعاد. مجموعة مصفوفة افضل مستوىيحتوي على 3 عناصر. كل عنصر هو أيضًا مصفوفة تحتوي على 3 قيم.

يمكنك أيضًا استخدام مصفوفة ترابطية كمصفوفة متعددة الأبعاد. يوضح المثال التالي إنشاء مصفوفة مفهرسة تحتوي على 3 مصفوفات ترابطية:

$ movies = array (array ("title" => "Rear Window"، "Director" => "Alfred Hitchcock"، "year" => 1954)، المصفوفة ("title" => "Full Metal Jacket"، "المخرج "=>" Stanley Kubrick "،" year "=> 1987)، المصفوفة (" title "=>" Mean Streets "،" Director "=>" Martin Scorsese "،" year "=> 1973)) ؛

يمكنك تداخل المصفوفات بعمق داخل بعضها البعض حسب الحاجة (على الرغم من أن عمق التعشيش نادرًا ما يكون أكثر من 3 مستويات في الممارسة). يوضح المثال أدناه مصفوفة ثلاثية الأبعاد:

$ myArray = صفيف (صفيف (صفيف (قيمة 1 ، قيمة 2) ، صفيف (قيمة 3 ، قيمة 4)) ، صفيف (صفيف (قيمة 5 ، قيمة 6) ، صفيف (قيمة 7 ، قيمة 8))) ؛

الوصول إلى عناصر في مصفوفة متعددة الأبعاد

للوصول إلى عناصر مصفوفة متعددة الأبعاد ، يمكنك استخدام صيغة "الأقواس المربعة" ، والتي تستخدم للعمل مع مصفوفة عادية. إذا كنت تريد الوصول إلى عناصر المستوى الثاني في مصفوفة ثنائية الأبعاد ، فأنت تحتاج فقط إلى استخدام المجموعة الثانية من الأقواس المربعة ، على سبيل المثال:

$ myArray = صفيف (صفيف ("واحد" ، "اثنان" ، "ثلاثة") ، مصفوفة ("أربعة" ، "خمسة" ، "ستة")) ؛ // طباعة "six" echo $ myArray؛ ؟>

وإليك مثال يوضح كيفية الوصول إلى عناصر مختلفة من مصفوفة أفلام $ متعددة الأبعاد التي أنشأناها سابقًا:

صدى عنوان الفيلم الأول:
"؛ صدى أفلام $ [" title "]."

"؛ صدى" المخرج الثالث:
"؛ صدى أفلام $ [" المخرج "]."

"؛ صدى" المصفوفة المتداخلة المضمنة في العنصر الأول:
"؛ print_r (أفلام $) ؛ صدى"

";

سينتج عن تنفيذ الكود الناتج التالي:

عنوان الفيلم الأول: النافذة الخلفية ، مخرج الفيلم الثالث: مارتن سكورسيزي ، المصفوفة المتداخلة الموجودة في العنصر الأول: Array (=> Rear Window => Alfred Hitchcock => 1954)

يستخدم المثال الأخير أفلام $ للوصول إلى المصفوفة المتداخلة بالكامل في العنصر الأول من مصفوفة المستوى الأعلى ، ثم يستخدم الدالة print_r () لعرض محتويات المصفوفة.

تنظيم التكرار على جميع عناصر مصفوفة متعددة الأبعاد في حلقة

تمامًا مثل المصفوفة العادية أحادية البعد ، يمكنك استخدام foreach للتكرار على جميع عناصر المصفوفة متعددة الأبعاد. نحتاج إلى إنشاء حلقة foreach متداخلة ، أي حلقة داخل أخرى:

  1. تأخذ الحلقة الخارجية كل عنصر من عناصر مصفوفة المستوى الأعلى.
  2. لكل عنصر من عناصر المستوى الأعلى ، تتكرر الحلقة الداخلية عبر المصفوفة المتداخلة ، وهكذا.

ينشئ المثال مصفوفة ثنائية الأبعاد تحتوي على معلومات عن الأفلام ، ثم ينظم حلقة فوق عناصر المصفوفة لعرض المعلومات على الصفحة:

$ movies = array (array ("title" => "Rear Window"، "Director" => "Alfred Hitchcock"، "year" => 1954)، المصفوفة ("title" => "Full Metal Jacket"، "المخرج "=>" Stanley Kubrick "،" year "=> 1987)، المصفوفة (" title "=>" Mean Streets "،" Director "=>" Martin Scorsese "،" year "=> 1973)) ؛ foreach (أفلام $ as $ movie) (صدى صوت "

"؛ foreach (فيلم $ as $ key => $ value) (echo"
مفتاح $
قيمة دولار
"؛) صدى صوت"
"; }

سينتج عن تنفيذ هذا الرمز الناتج التالي:

اللقب مخرج النافذة الخلفية ألفريد هيتشكوك عام 1954 العنوان مخرج جاكيت معدني كامل ستانلي كوبريك عام 1987 العنوان مدير شوارع يعني مارتن سكورسيزي عام 1973

ملخص

المصفوفات متعددة الأبعاد مناسبة لتخزين أي نوع من البيانات ، على سبيل المثال ، لتخزين سجلات أو قيم قاعدة بيانات متعددة للعرض في الجداول. يمكن أن يؤدي استخدام المصفوفات متعددة الأبعاد إلى زيادة مستوى وظائف نصوص PHP.

سيأخذ الدرس في الاعتبار إمكانيات العمل مع المصفوفات في php ، وتصريح المصفوفة ، وأنواع المصفوفات: المصفوفات متعددة الأبعاد والجمعيات

  1. المصفوفات ذات المؤشرات الرقمية
  2. ثمار دولار = "تفاحة" ؛ ثمار دولار = "كمثرى" ؛ ثمار دولار = "برتقالي" ؛ ثمار دولار = "مشمش" ؛

    لا يتم استخدام هذا المتغير من تهيئة الصفيف عمليا اليوم. يتم استخدام الطريقة التالية للعمل مع المصفوفات:

  3. مصفوفة متصلة
  4. يستخدم هذا المتغير لإنشاء مصفوفة كائن المصفوفة:

    الفواكه $ = مجموعة (1 => "تفاحة" ، 2 => "كمثرى" ، 3 => "برتقالي" ، 4 => "مشمش") ؛ // نبدأ ب إصدارات PHP 5.4 $ ثمار = مجموعة [1 => "تفاحة" ، 2 => "كمثرى" ، 3 => "برتقالي" ، 4 => "مشمش"] ؛

    الوصول إلى عناصر المصفوفة

    1 2 3 4 5 6 7 8 فواكه $ [0] = "تفاحة"؛ فواكه $ [1] = "كمثرى"؛ فواكه $ [2] = "برتقالي"؛ فواكه $ [3] = "مشمش"؛ صدى صوت "العنصر الأول من المصفوفة هو"... فواكه $ [0]. "
    "؛ صدى صوت "العنصر الثاني من المصفوفة هو"... فواكه $ [1]. "
    "؛ صدى صوت "العنصر الثالث للمصفوفة هو"... فواكه $ [2]. "
    " ;

    ثمار دولار = "تفاحة" ؛ ثمار دولار = "كمثرى" ؛ ثمار دولار = "برتقالي" ؛ ثمار دولار = "مشمش" ؛ صدى "العنصر الأول من المصفوفة هو". ثمار دولار ".
    "؛ صدى" العنصر الثاني من المصفوفة هو ". $ ثمار."
    "؛ صدى" العنصر الثالث من المصفوفة هو ". $ ثمار."
    ";

    ستكون نتيجة تنفيذ البرنامج:

    الأهمية:لا يمكن أن يكون فهرس عنصر في مصفوفة ترابطية رقمًا ، بل كلمة (type سلسلة)

    لنفكر في مثال:

    مثال:قم بإنشاء مصفوفة طالب بقيم أسماء وألقاب وأعمار الطلاب. اعرض قيم عناصر المصفوفة

    $ student = array ("Name" => John، "Surname" => Smith، "Age" => 20)؛ صدى "اسم المستخدم". $ student ["Name"]. "


    ";

    $ student ["Name"] = "John"؛ طالب $ ["Surname"] = "سميث" ؛ طالب $ ["العمر"] = 20 ؛ صدى "اسم المستخدم". $ student ["Name"]. "
    "؛ صدى" اسم المستخدم الأخير ". $ student [" Surname "]."
    "؛ صدى" عمر المستخدم ". $ student [" العمر "]."
    ";

    نتيجة:

    الأهمية:يجب دائمًا اقتباس مفاتيح السلسلة (الفهارس)

    صفائف مفهرسة بدون مفتاح:

    وتجدر الإشارة أيضًا إلى أن المؤشرات الموجودة في المصفوفة لا تحتاج إلى كتابتها على الإطلاق عند تهيئة المصفوفة بالقيم. ثم نقوم بإنشاء ما يسمى ب مجموعة المصفوفة(كائن المجموعة):

    $ student = array ("John"، "Smith"، 20)؛

    $ student = array ("John"، "Smith"، 20)؛

    في هذه الحالة ، سيقوم المترجم الفوري بتعيين مؤشرات رقمية لهم ، بدءًا من 0

    مثالاكتب التحويلات وإعادة كتابة العنصر.
    لاحظ استخدام إجراء var_dump ()

    1 2 3 4 5 6 7 8 9 "أ" ، "1" => "ب" ، 2 => "ج" ، 2 => "د" ،) ؛ var_dump ($ my_array) ؛ ؟>

    "أ" ، "1" => "ب" ، 2 => "ج" ، 2 => "د" ،) ؛ var_dump ($ my_array) ؛ ؟>

    نتيجة:

    Array (3) (=> سلسلة (1) "a" => سلسلة (1) "b" => سلسلة (1) "d")

    مثالاستخدام مجموعة متعددة الأبعادوتنظيم الوصول إلى عناصرها

    1 2 3 4 5 6 7 8 9 10 11 12 "1" ، 2 => 2 ، "متعدد" => صفيف ("1_1" => "1_1")) ؛ var_dump ($ array_odnom ["first"])؛ var_dump ($ array_odnom [2]) ؛ var_dump ($ array_odnom ["multi"] ["1_1"]) ؛ ؟>

    "1" ، 2 => 2 ، "متعدد" => صفيف ("1_1" => "1_1")) ؛ var_dump ($ array_odnom ["first"])؛ var_dump (array_odnom $) ؛ var_dump ($ array_odnom ["multi"] ["1_1"]) ؛ ؟>

    نتيجة:

    سلسلة (1) "1" int (2) سلسلة (3) "1_1"

    مثال:أنشئ مصفوفة ثنائية الأبعاد بأبعاد 3 × 2. املأها بقيم السطر الأول: "1_1" ، "1_2" ، "1_3" ؛ للسطر الثاني: "2_1" ، "2_2" ، "2_3". اعرض العنصر الأول في المصفوفة


    أداء:
    1 2 3 4 5 6 7 8 9 10 11 12 $ array_odnom = array (1 => array (1 => "1_1"، 2 => "1_2"، 3 => "1_3")، 2 => array (1 => "2_1"، 2 => "2_2" ، 3 => "2_3")،)؛ صدى $ array_odnom [1] [1] ؛

    $ array_odnom = array (1 => array (1 => "1_1"، 2 => "1_2"، 3 => "1_3")، 2 => array (1 => "2_1"، 2 => "2_2" ، 3 => "2_3")،)؛ صدى $ array_odnom؛

    وظيفة PHP2_1:أنشئ مصفوفة ثنائية الأبعاد 3 × 3 - الزاوية اليسرى العلوية لجدول الضرب في فيثاغورس (1 ، 2 ، 3 ؛ 4 ، 6 ، 8 ...)



    العمل المخبري:
    لنفترض أن لديك نوعًا من الإعلانات والعديد من الأشخاص المختلفين الذين يحتاجون إلى إرسال هذا الإعلان. للقيام بذلك ، تقوم بإنشاء نموذج بمحتوى الإعلان ، يوجد بداخله عدد من المعلمات المتغيرة: مجموعة من أسماء الأشخاص ومجموعة من الأحداث. اعرض متغيرًا واحدًا من الإعلان النهائي على الشاشة. لتحديد المصفوفات ، استخدم مصفوفة ترابطية أيضًا.

    استخدم نموذج إعلان واسترشد بالألوان:

    أحمر - صفائف.
    براون متغير رقمي.
    الأزرق ثابت.

    عزيزي إيفان إيفانوفيتش!
    نحن ندعوك إلى يوم مفتوح.
    تاريخ الفعالية: 12 مايو.
    مع أطيب التحيات ، فاسيلي.


    أكمل الكود:
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 // إعلان ثابتتعريف ("التوقيع" ، "مع أطيب التحيات ، فاسيا") ; // مجموعة لأسماء المستلمينأسماء $ = مجموعة (...) ؛ // مجموعة للأحداثأحداث $ = مجموعة ("op_doors" => "يوم مفتوح"، "vistavka" => "Exhibition"، ...)؛ $ str = "عزيزي ، أسماء $!
    "
    ؛ $ str. = ... ؛ $ str. = ... ؛ صدى صوت ...؛

    // تعريف ثابت للإعلان ("SIGN"، "Sincerely، Vasya")؛ // مجموعة لأسماء المستلمين $ names = array (...) ؛ // array for events $ events = array ("op_doors" => "open day"، "vistavka" => "Exhibition"، ...)؛ $ str = "عزيزي ، أسماء $!
    "؛ $ str. = ...؛ $ str. = ...؛ صدى ...؛

اخر تحديث: 1.11.2015

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

جالاكسي ايس II "؛ هواتف $ =" سوني اكسبيريا Z3 "؛ $ phones =" Samsung Galaxy III "؛ لـ ($ i = 0 ؛ $ i "; ?>

يؤدي هذا إلى إنشاء مصفوفة هواتف $ تتكون من أربعة عناصر. كل عنصر في المصفوفة هو زوج ذو قيمة رئيسية. إذن ، العنصر الأول $ phones = "Nokia N9" له مفتاح - الرقم 0 ، والقيمة - السلسلة "Nokia N9". في مثل هذه المصفوفات ، تسمى المفاتيح الرقمية أيضًا مؤشرات.

باستخدام الدالة count () ، يمكنك معرفة عدد العناصر في المصفوفة. ونظرًا لحقيقة أن المفاتيح مرتبة من 0 إلى 3 ، ومعرفة حجم المصفوفة ، يمكنك عرض عناصر المصفوفات في حلقة for.

لتوضيح العلاقة بين مفاتيح وقيم العناصر ، نعرض المصفوفة باستخدام دالة print_r:

Print_r (الهواتف $) ؛

نحصل على الناتج التالي:

Array (=> Nokia N9 => Samsung Galaxy ACE II => Sony Xperia Z3 => Samsung Galaxy III)

سيكون إنشاء المصفوفة هذا أيضًا معادلاً لما يلي:

"; ?>

إذا لم يتم تحديد مفتاح عنصر ، فسيستخدم PHP الأرقام كمفاتيح. في هذه الحالة ، يبدأ ترقيم المفاتيح من الصفر ، ولكل مفتاح مفتاح جديديزيد بمقدار واحد.

بمعرفة مفتاح عنصر في المصفوفة ، يمكننا الرجوع إلى هذا العنصر أو الحصول على قيمته أو تغييرها:

// الحصول على العنصر عن طريق المفتاح 1 $ myPhone = $ phones؛ صدى "$ myPhone
"؛ // تعيين قيمة جديدة $ phones =" Samsung X650 "؛ صدى" $ phones
";

ولكن ليس فقط الأعداد الصحيحة ، ولكن أيضًا السلاسل يمكن استخدامها كمفاتيح:

تسمى هذه المصفوفات أيضًا ترابطي.

عامل المصفوفة

تمت مناقشة طريقة واحدة لإنشاء مصفوفة أعلاه. ولكن هناك طريقة أخرى تتضمن استخدام عامل المصفوفة ().

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

"iPhone5"، "samsumg" => "Samsung Galaxy III"، "nokia" => "Nokia N9"، "sony" => "Sony XPeria Z3")؛ echo $ phones ["samsumg"]؛ ؟>

تسمح لك العملية => بمطابقة مفتاح بقيمة معينة.

التكرار على المصفوفات الترابطية

أعلاه ، رأينا كيفية استخدام لحلقةطباعة جميع عناصر المصفوفة ، حيث يتم تحديد المفاتيح بشكل تسلسلي كأرقام من 0 إلى 3. ومع ذلك ، هذا لا يعمل مع المصفوفات الترابطية. وبالنسبة لهم في PHP ، يوجد نوع خاص من الحلقات - foreach ... مثل:

"iPhone5"، "samsumg" => "Samsung Galaxy III"، "nokia" => "Nokia N9"، "sony" => "Sony XPeria Z3")؛ foreach ($ phones as $ item) صدى "$ item
"; ?>

في حلقة foreach ، يتم استرداد جميع العناصر بالتسلسل من المصفوفة ويتم وضع قيمتها في المتغير المحدد بعد الكلمة الأساسية. في هذه الحالة ، يتم وضع القيم الأربع من مصفوفة الهواتف $ في متغير العنصر $ بدوره. عندما يتم استرداد العنصر الأخير من المصفوفة ، تنتهي الحلقة.

تتيح لك حلقة foreach استرداد ليس فقط القيم ، ولكن أيضًا مفاتيح العناصر:

"iPhone5"، "samsumg" => "Samsung Galaxy III"، "nokia" => "Nokia N9"، "sony" => "Sony XPeria Z3")؛ foreach (هواتف $ كـ $ key => $ value) صدى "$ key => $ value
"; ?>

هنا ، عند التكرار على عناصر الحلقة ، سيتم تمرير مفتاح العنصر إلى متغير المفتاح $ ، وقيمته إلى متغير القيمة $.

بديل حلقة foreachيقدم استخدام القائمة وكل وظيفة:

"iPhone5"، "samsumg" => "Samsung Galaxy III"، "nokia" => "Nokia N9"، "sony" => "Sony XPeria Z3")؛ while (list ($ key، $ value) = each ($ phones)) صدى "$ key => $ value
"; ?>

سيتم تشغيل حلقة while loop حتى ترجع كل دالة خطأ. تدور كل وظيفة عبر جميع عناصر مصفوفة الهواتف $ وتحصل عليها كمصفوفة تحتوي على مفتاح العنصر وقيمته. ثم يتم تمرير هذه المصفوفة إلى دالة list ويحدث تعيين قيم المصفوفة للمتغيرات الموجودة داخل الأقواس. عندما تنتهي كل وظيفة من التكرار خلال مصفوفة الهواتف $ ، ستعيد القيمة false وستنتهي حلقة while.

المصفوفات متعددة الأبعاد

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

صفيف ("iPhone5"، "iPhone5s"، "iPhone6")، "samsumg" => صفيف ("Samsung Galaxy III"، "Samsung Galaxy ACE II")، "nokia" => صفيف ("Nokia N9"، "Nokia Lumia 930 ")،" sony "=> صفيف (" Sony XPeria Z3 "،" Xperia Z3 Dual "،" Xperia T2 Ultra "))؛ foreach (هواتف $ كـ $ brand => $ items) (echo "

$ الماركة

"؛ صدى صوت"
    "؛ foreach (عناصر $ كـ $ key => $ value) (echo"
  • قيمة دولار
  • "؛) صدى صوت"
"; } ?>

وعند الإخراج سنحصل على 4 قوائم:

للإشارة إلى عنصر معين ، تحتاج أيضًا إلى تحديد المفاتيح بين قوسين مربعين. على سبيل المثال ، لنلقِ نظرة على العنصر الأول في المصفوفة الأولى. بما أن مفتاح المصفوفة الأولى هو "apple" ، ومفتاح العنصر الأول في المصفوفة الأولى هو الرقم 0 (بما أننا لم نحدد المفاتيح صراحة):

صدى هواتف $ ["apple"]؛

وبالمثل ، يمكنك الحصول على العنصر الثاني من المصفوفة الثالثة:

صدى هواتف $ ["nokia"]؛

لنفترض أن المصفوفات المتداخلة تمثل أيضًا المصفوفات الترابطية:

صفيف ("apple" => "iPhone5"، "samsumg" => "Samsung Galaxy III"، "nokia" => "Nokia N9")، "اللوحية" => صفيف ("lenovo" => "Lenovo IdeaTab A3500" ، "samsung" => "Samsung Galaxy Tab 4"، "apple" => "Apple iPad Air"))؛ foreach ($ technics as $ tovar => $ items) (echo "

tovar دولار

"؛ صدى صوت"
    "؛ foreach (عناصر $ كـ $ key => $ value) (echo"
  • المفتاح $: القيمة $
  • "؛) صدى صوت"
"؛) // تعيين قيمة مختلفة لأحد العناصر $ technics [" phones "] [" nokia "] =" Nokia Lumnia 930 "؛ // اعرض هذه القيمة echo $ technics [" phones "] [" nokia " ] ؛؟>