الدرس الثامن: المصفوفات

في هذا الدرس سنلقي نظرة على المصفوفات، كيف تستخدم وماذا يمكنها أن تفعل.

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

ما هي المصفوفة؟

المصفوفة (array) هي مجموعة من من العناصر المفهرسة حيث كل عنصر له رقم تعريف خاص به.

يبدو هذا مثيراً للحيرة، لكنها في الواقع ليست بهذا القدر من التعقيد.

تصور قائمة من الكلمات فصلنا بينها باستخدام فاصلة، تسمى القائمة مفصولة بفواصل، ويمكنها أن تكون بهذا الشكل:


	apples, pears, bananas, oranges, lemons
	
	

جرب أن تتخيل تقسيم القائمة عند كل فاصلة، ثم أعطي كل قسم رقماً مميزاً كما في الصورة:

apples (0), pears (1), bananas (2), oranges (3), lemons (4)

ما تراه هو مصفوفة، يمكننا مثلاً أن نسمي المصفوفة فواكه أو "fruits"، الفكرة هي أنك تستطيع الوصول إلى المصفوفة برقم وتحصل على قيمة، كما في القائمة أدناه:

fruits(0) = apples
fruits(1) = pears
fruits(2) = bananas
fruits(3) = oranges
fruits(4) = lemons

هذه هي فكرة المصفوفات، الآن لنستخدمها عملياً.

كيف تستخدم المصفوفة؟

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


	<?php

	$fruitlist = "apples, pears, bananas, oranges, lemons";
	
	?>
	
	

بعد ذلك نستخدم وظيفة توثيقexplode لفصل القائمة عند كل فاصلة:


	<?php
	 
	$fruitlist = "apples, pears, bananas, oranges, lemons";
	 
	$arrFruits = explode(",", $fruitlist);

	?>
	
	

مرحى! المتغير "$arrFruits" أصبح مصفوفة الآن!

لاحظ أننا استخدمنا الوظيفة توثيقexplode بخاصيتين:

  1. الأولى هي القائمة التي يجب تقسيمها.
  2. والثانية هي المحدد أو الحرف الذي استخدم لتقسيم القائمة (في حالتنا استخدمنا الفاصلة): ",".

هنا نستخدم الفاصلة كمحدد أو مقسم لكن يمكنك استخدام أي حرف أو كلمة كمقسم للمصفوفة.

لنجرب إضافة تعليق على البرنامج ووضعه في صفحة PHP:


	<html>
	<head>
	<title>Array</title>
	</head>
	<body>

	<?php
 
	// Comma separated list
	$fruitlist = "apples, pears, bananas, oranges, lemons";
	 
	// Create an array by splitting the list (with comma as delimiter)
	$arrFruits = explode(",", $fruitlist);
	 
	   // Write the values from our array
	   echo "<p>The list of fruits:</p>";
	 
	   echo "<ul>";
	   echo "<li>" . $arrFruits[0] . "</li>";
	   echo "<li>" . $arrFruits[1] . "</li>";
	   echo "<li>" . $arrFruits[2] . "</li>";
	   echo "<li>" . $arrFruits[3] . "</li>";
	   echo "<li>" . $arrFruits[4] . "</li>";
	   echo "</ul>";

	?>

	</body>
	</html>
	
	

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

حلقة داخل مصفوفة

في الدرس الخامس تعلمت الحلقات، الآن يمكننا استخدام حلقة للتعامل مع المصفوفة.

عندما تعلم كم عدد العناصر التي تحويها مصفوفة فلن تكون هناك مشكلة في تحديد حلقة، ببساطة تبدأ من الصفر وتجعل الحلقة تستمر في عملها بعدد العناصر المتوفرة، في المثال مع الفواكه الحلقة ستكون بهذا الشكل:


	<html>
	<head>
	<title>Array</title>

	</head>
	<body>

	<?php
 
	// Comma separated list
	$fruitlist = "apples, pears, bananas, oranges, lemons";
	 
	// Create an array by splitting the list (with a comma as delimiter)
	$arrFruits = explode (",", $fruitlist);
	 
	   echo "<p>The list of fruits:</p>";
	   echo "<ul>";
	 
	   // Loop through the array $arrFruits
	   for ($x=0; $x<=4; $x++) {
	      echo "<li>" . $arrFruits[$x] . "</li>";
	   }
	 
	   echo "</ul>";

	?>
	 
	</body>
	</html>
	
	

كما ترى، المتغير $x الذي ترتفع قيمته من 0 إلى 4 في الحلقة استخدم لجلب المصفوفة

كيف تجد حجم المصفوفة؟

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

ألن يكون من المفيد أن تكون هناك طريقة لإيجاد عدد العناصر في أي مصفوفة؟

هذا بالضبط ما يمكن أن تفعله وظيفة توثيقforeach، الآن يمكننا أن نصمم حلقة تعمل بغض النظر عن عدد العناصر في المصفوفة:


	<?php
	   foreach ($arrFruits as $x) {
	      echo arrFruit[$x];
	   }
	?>
	
	

هذه الحلقة ستعمل بغض النظر عن عدد العناصر التي تحويها المصفوفة.

مثال آخر

المثال أدناه يوضح كيفية استخدام المصفوفة لكتابة اسم كل شهر:


	<html>
	<head>
	<title>Array<title>

	</head>
	<body>

	// Creates array with each month.
	// Creates array with the months. Note the comma before January - because there is no month with the number 0
	$arrMonths = array(,"January","February","March","April","May","June","July","August","September","October","November","December);
	 
	// Call the array with the number of the month - write to the client
	echo $arrMonths[date("m")];
	?>

	</body>
	</html>
	
	

لاحظ أننا استخدمنا وظيفة توثيقarray بدلاً من وظيفة توثيقexplode لإنشاء مصفوفة.

حسناً، اكتفينا بالمصفوفات، في الدرس التالي ستتعلم كيف تطور وظائف خاصة بك.



<< Lesson 7: ضع تعليقات في برامجك

Lesson 9: وظائف >>