الدرس الخامس : المصفوفات







السلام عليكم ورحمة الله وبركاته
السادة أعضاء ترايدنت
تحيه طيبه اليكم

نستكمل سويا دروس
دورة ترايدنت المفتوحة بعد توقف شهر سابق التى ابتدأناها سويا فى معهدنا الغالى ترايدنت .

والآن سنقدم الدرس الخامس بعنوان المصفوفات وتتمثل محاور الحديث على :
  1. مقدمه عن المصفوفات .
  2. التعامل مع المصفوفات ومفتاح القيمه .
  3. أنواع المصفوفات .
  4. المصفوفات البسيطه .
  5. المصفوفات المعقده .
  6. المصفوفات الخاصه .
  7. دوال التعامل مع المصفوفات .
الشرح
1-مقدمه عن المصفوفات :
تحدثنا فيما سبق عن المتغيرات وأوضحنا أن المصفوفات هى نوع متميز من المتغيرات حيث بامكان المصفوفات أن تحمل أكثر من قيمه بنفس الاسم .
فبامكان المصفوفات أن تحمل كم كبير من القيم بعكس المتغيرات العاديه فالمتغيرات العاديه بمختلف انواعها تحمل قيمه واحده فقط أما المصفوفات فهمى تحمل أكثر من قيمه .

وعند تعريفنا للمصفوفات فاننا يمكن تعريفها على انها خريطه منسقه . تلك الخريطه من النوع الذى يعرف بقيمه تعرف بمفتاح . تلك الخريطه يمكنك أن تعرف بها كم هائل من القيم والتى يكون لكل قيمه بها مفتاح .


فى الحقيقه عند بداياتى فى البرمجه وتعلمى للبرمجه لم اقدر قيمة المصفوفات ولكن عندما دخلت العالم بتعمق اكتشفت انها من اهم أجزاء كودك البرمجى ومن أسس بناء كود محترم

لذلك نصيحة منى اهتم بها جيدا .....

2-التعامل مع المصفوفات :
عندما شرحنا الدرس الثانى الخاص بالتعامل مع المتغيرات أوضحنا انك عندنا تريد أن تعرف متغير جديد وتسند له القيمه سيكون كما يلى .
رمز PHP:
$ahmed "Mr.Ajax"
فى المصفوفات قد يكون الأمر مختلف الى حد ما
فعندما نريد أن نعرف مصفوفه فاننا يجب أن نخبر المترجم اننا سنعرف مصفوفه وهذا يتم باستخدام الداله array()

فمثلا اذا اردنا ان نعرف مصفوفه فسنقوم بما يلى :
رمز PHP:
$ahmed = array("enginner","programmer","developer"); 
بالمثال السابق يجب توضيح ما يلى :
ahmed : اسم المصفوفه
array : وجب استخدامها لكى نخبر المترجم ان ما سيتعامل معه هو عباره عن مصفوفه وليس متغير عادى .
("enginner","programmer","developer") : هى قيم المصفوفه ويتم الفصل بين كل قيمه والآخرى بفاصله .

باستخدام المثال السابق أنت قمت بتعريف المصفوفه وادخلت بها القيم المراده .

أما اذا كنت تريد استدعاء قيمه فيجب العلم بأنك ستقوم بالاستدعاء عن طريق مفتاح القيمه .

اذن فاستدعاء قيمه من المتغير ستتم عن طريق ما يسمى بمفتاح القيمه فيجب تعريف ما هو مفتاح القيمه أولا ثم العوده فيما بعد ذلك الى الاستدعاء .

مفتاح القيمه هو عباره عن قيمه تسند تلقائيا الى المتغير الموجود بالمصفوفه اذا لم يتم اسنادها اليه .
فمثلا فى المثال السابق لم يتم تعريف أو اسناد مفتاح القيمه الى اى من قيم المصفوفه .
فتلقائيا سيعتبر المترجم أن القيمه الاولى قيمة مفتاحها هو صفر والقيمه الثانيه قيمة مفتاحها واحد وهكذا .....
رمز PHP:
1=> engineer 
2
=> programmer
3
=> developer 
أما اذا أردنا أن نقوم بتعريف مفتاح القيمه بصوره خاصه بنا فاننا سنقوم بمايلى :
رمز PHP:
$ahmed = array("first" => "enginner","second" => "programmer","third" => "developer"); 
وفى هذا المثال قمنا نحن يدويا باسناد قيمة مفتاح القيمه الخاص بقيمة عنصر المصفوفه .
ويكون مفتاح العنصر الأول هو first ومفتاح العنصر الثانى هو second والعنصر الثالث هو third
رمز PHP:
first =>engineer
second
=>programmer
third
=>developer 
والآن نعود الى استدعاء عنصر من المصفوفه .
فى هذا المثال
رمز PHP:
$ahmed = array("enginner","programmer","developer"); 
اذا أردنا أن نستدعى العنصر الأول فكما أشرنا سابقا أن مفتاحه هو صفر فسنقوم بكتابة ما يلى :
رمز PHP:
echo $ahmed[0]; 
واذا اردنا استدعاء العنصر الثانى من المصفوفه
رمز PHP:
echo $ahmed[1]; 
وهكذا مع باقى عناصر المصفوفه ........

أما بالنسبه لهذا المثال

رمز PHP:
$ahmed = array("first" => "enginner","second" => "programmer","third" => "developer"); 
فقد أشرنا سابقا أننا قمنا بتعريف مفتاح القيمه أو مفتاح الوصول
فاذا أردنا استدعاء العنصر الأول من المصفوفه :
رمز PHP:
echo $ahmed[first]; 
أما اذا أردنا استدعاء العنصر الثانى من المصفوفه
رمز PHP:
echo $ahmed[second]; 
وهكذا مع باقى عناص المصفوفه ......

3- أنواع المصفوفات :
عند حديثنا عن أنواع المصفوفات فاننا يمكن أن نصنفهم كما يلى :
  1. مصفوفات بسيطه : ذات بعد واحد .
  2. مصفوفات معقده : ذات الأبعاد المتباعده .
  3. مصفوفات خاصه : تستعمل فى نقل البيانات بين الصفحات والجلسات .
4- المصفوفات البسيطه :
المصفوفات البسيطه هى التى أشرنا اليها فى المثالين السابقين وهى تتكون من بعد واحد فقط .
وتم الاشاره اليها بالأمثله فى الفقرات السابقه .

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

فمثلا فى هذا المثال سيكون فهمه سهل جدا اذا كنت قد اتقنت ما تم ذكره فى الفقرات السابقه

رمز PHP:
$ahmed = array(
            
"first" => array(
                        
"A"=>"Ahmed",
                        
"b"=>"Selim",
                        
"c"=>"refaat"),
            
"second" => array(
                        
"A"=>"Mohammed",
                        
"b"=>"selim",
                        
"c"=>"refaat"),
            ); 
أما عن طريقة الاستعلام فستكون بطريقة متسلسه مثال على استدعاء العنصر الاول من المصفوفه الثانيه من المصفوفه الاولى :
رمز PHP:
echo $ahmed["second"]["A"]; 
6- المصفوفات الخاصه :
ومنها HTTP_GET_VARS



وكذلك HTTP_POST_VARS هى ليست متغيرات ولكنها مصفوفات تختزن بها البيانات التى يتم نقلها من صفحة لأخرى ويتم تعريفها تلقائيا عندما تصل المتغيرات الى صفحه أخرى بواسطة الوسيله get او post وسيتم الحديث باستفاضه عن تلك المتغيرات والتعامل معها عند التعامل مع النماذج فى الدروس القادمه .
7- دوال التعامل مع المصفوفات :
هناك الكثير والكتير من الدوال التى تختص بالتعامل مع المصفوفات سنتحدث عن الأكثر استخداما منها ويمكنك الاطلاع على قائمة الدوال التعامل مع المصفوفات على الرابط التالى :
http://www.php.net/manual/en/ref.array.php

ومن أهم الدوال :
array()

تقوم بحجز مصفوفه جديده وتحدثنا عنها فى الفقرات السابقه
list .... each


تختص بصنع مصفوفه مفهرسه بجداول html ومثال على تلك الداله :
رمز PHP:
<?php
$ahmed 
= array("first" => "enginner","second" => "programmer","third" => "developer");

while (list(
$key$val) = each($ahmed)) {
   echo 
"$key = $val<br>";
}
?>

print_r()
تعرض المصفوفه فى شكل هرمى للتعرف بسهوله على عناصر كل مصفوفه
ومثال على تلك الداله :
رمز PHP:
<?php
$ahmed 
= array("first" => "enginner","second" => "programmer","third" => "developer");

echo 
"<pre>";
   
print_r ($ahmed);
echo 
"</pre>";
?>
array_merge()

ومثال على تلك الداله
تقوم بدمج مصفوفتان فى مصفوفه جديده واحده
رمز PHP:
<?php
$array1 
= array("color"  => "red"24);
$array2 =  array("a""b""color"  => "green""shape" =>  "trapezoid"4);
$result  array_merge($array1$array2);
print_r($result);
?>
array_push()

ومثال على تلك الداله
تقوم باضافة قيمه أو اكثر الى مهاية المصفوفه
رمز PHP:
<?php
$stack 
= array("orange",  "banana");
array_push($stack"apple""raspberry");
print_r($stack);
?>
array_unique()

ومثال على تلك الداله
تقوم بارجاع عناصر المصفوفه بدون تكرار
رمز PHP:
<?php
$input 
= array("a"  => "green""red""b" =>  "green",  "blue",  "red");
$result  array_unique($input);
print_r($result);
?>
فى النهايه يرجى النظر الى مرجع دوال التعامل مع المصفوفات على الرابط التالى
http://www.php.net/manual/en/ref.array.php


الى هنا ينتهى الدرس الخامس
الى اللقاء باذن الله فى الدرس السادس
ملحوظه : استعنت فى هذا الدرس ببعض الأمثله من موقع php.net ووجب التنويه

دروس سابقه :

أرجو أن أكون قد قدمت لكم الدرس بشكل واضح ومفهوم
واذا كان هناك شئ يشوبه الغموض لا تتردد فى وضع استفسارك

تقبلوا تحياتى
Mr.Ajax