المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الحلقة الثامنة [ تطبيقات على المصفوفات ]



bahattab
23-07-2007, 10:11 AM
أولا أعتذر عن التقصير الواضح مني لكن والله عندي أعذاري واهمهم طبعا الشغل [ كنت مشغول جدا لدرجة اني مش بنام والله ]

المهم .....

كما وعدتكم في الحلقة السابقة أن هذه الحلقة ستكون تطبيقات على المصفوفات ووعدت أيضا بمجموعة حلقات متتالية تعويضا عما سبق ....


تطبيقات على المصفوفات ......
===========================
تبدئة المصفوفات :
-----------------
توجد عدة طرق في الحقيقة لتبدئة المصفوفات . وتتلخص إحداها في البدء بتعيين قيم الى عناصر متغير المصفوفة .
لكل مصفوفة دليل ومفتاح .. الدليل [ index ] والمفتاح [key]
تتولى الشيفرة التالية إنشاء مصفوفة تدعى $lang
مثال : EX.27


كود PHP:

<?
$lang[0]="Arabic";
$lang[1]="English";
$lang[2]="France";
echo $lang[1]; //الناتج يكون English
?>

الدليل هو الرقم ما داخل القوس [] أو يسمى الفهرس INDEX في المثال السابق قمنا نحن بالفهرسة 0,1,2

لكن لو لم نقم بالفهرسة كالتالي :

كود PHP:

<?
$lang[]="Arabic";
$lang[]="English";
$lang[]="France";
echo $lang[1]; //الناتج يكون English
?>

يقوم مترجم الـ php أوتوماتيكيا بوضع فهرسة تبدأ من الصفر لذلك لما طبعنا $lang[1] كان الناتج English


. ليس شرطا أن تكون أدلة أو فهارس المصفوفة [ ما بين الأقواس ] متتالية أو متتابعة تبعا لترتيب معين .
قد يبدأ الفهرس بالرقم 200 ويتبعه الفهرس الثاني 190 ... الخ
ولا تحتاج عناصر المصفوفة للتصريح عنها تباعا .

هذا مثال لإنشاء أربعة عناصر لمصفوفة بالأدلة 100,400,300,401

EX.28

كود PHP:

$lang[100]="Arabic";
$lang[400]="English";
$lang[300]="France";
$lang[]="korean";
echo $lang[300]; //الناتج يكون France
echo $lang[401]; // الناتج يكون korean


لو تلاحظ أننا عينا هنا فقط ثلاثة فهارس وهم 100,400,300 ولم نعين الرابع ... فقام مترجم الـ php بتتعينه افتراضيا ولكن بقاعدة معينة ....
تقوم الـ php بتعيين هذا الدليل بتعيين أول عدد صحيح متاح يلي أكبر دليل أو فهرس مستخدم ....
ففي مثالنا السابق كان اول عدد صحيح متاح [ دائما ] هو رقم 1 وكان أكبر دليل هو 400 إذا الدليل الذي لم نقم نحن بتعيينه يكون 401 .
لذلك لما قمنا بطباعة $lang[401] كان الناتج korean


السابق يمثل المصفوفات بدون استخدام البنية Array() ....

دائما اخواني أي لغة برمجة لها بنى [ جمع بنية ] أساسية ..
فمن بنى لغة الـ php التابع Array()

تقدم البنية array() بديلا سهلا وبسيطا عما سبق . إذ تستقبل المصفوفة array() قائمة قيم متمايزة بفاصلة , ليصار الى وضعها ضمن مصفوفة .....

باستخدام البنية array() يمكن أن نترك تعيين الفهرسة حملا على مترجم php كالتالي :
EX.29

كود PHP:

<?
$lang = array("Arabic", "English", "France");
echo $lang[0]; // الناتج يكون Arabic
?>

كما نلاحظ تمت الفهرسة تلقائيا .. بأدلة تبدأ من صفر
لو طبعنا النتغير $lang[0] يكون الناتج Arabic

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

ولا حظنا أنه تم وضع فهرسة تلقائية ... لكن لو أردنا أن نضع نحن أدلة أو فهارس تبعا لطبيعة سكربتنا الذي نود برمجة باستخدام البنية array() .. يكون ذلك باستخدام المعامل => ضمن البنية array() كالتالي

مثال EX.30

كود PHP:

<?
$lang = array(0=>"Arabic", 1=>"English", 2=>"France");
echo $lang[1]; // الناتج يكون English
?>

أظن وضحت الفكرة بفضل الله ...............

لولم تتضح الفكرة برجاء التعليق بهذا في الرد ...

هنا سؤال يطرح نفسه ...
هل لابد من الفهرسة بالأرقام فقط ... ?!
الإجابة : ليس شرطا أن تكون الفهرسة أرقام فقط بل يمكن أن تكون حروف أيضا ...

ولكن عند الفهرسة بالأرقام يكتب الرقم كما هو بين قوسي الدليل [1] مثلا .. أما في البنية array() =>1
لكن بالحروف تختلف بعض الشئ . لابد من وضع الحرف بين علامتي الإقتباس المزدوج double qoute ["A"] مثلا ... أما في البنية array() =>"A"

مثال EX.31

كود PHP:

<?
$lang=array(
"AR"=> "Arabic",
"EN"=> "English",
"FR"=> "France"
);
echo $lang[EN]; // الناتج يكون English
?>

إذا طبعنا المتغير $lang[EN] يكون الناتج English

وهكذاااااااااااااااااااااااااااا ....


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

تظهر المصفوفة المتعددة الأبعاد عندما يحوي كل من عناصرها مصفوفة أيضا [ متداخلة ] ...

حميع تبدئة المصفوفات العادية في الأمثلة السابقة أو المصفوفات وحيدة البعد على المصفوفات متعددة الأبعاد ..
وإليك مثال :
EX.32

كود PHP:

<?
$lang=array(
"Arabic"=> array("egypt", "saudi", "qatr"),
"English"=> array("American", "England"),
"France"=> array("France")
);
?>

للوصول الى عمق مصفوفة متعددة الأبعاد تستخدم مجموعات أخرى من الأقواس المتوسطة وبناء على ذلك يشير المتغير $lang["Arabic"] الى مصفوفة تتضمن عناصر اللغة العربية فيما يشير المتغير $lang["Arabic"][0] الى العنصر الأول في المصفوفة Arabic والذي يفهرس بالرقم صفر تلقائياا وهو egypt


يعني لو كتبنا الأمر التالي سيكون خرج الشيفرة هو egypt


كود PHP:

<?
echo $lang["Arabic"][0];
?>


الدوران داخل المصفوفة:
==============
لقد كان استعراض مصفوفة في PHP3 أمرا معقدا للتابع echo والذي يستخدم البنية list والحلقة while ..
أما في PHP4 فقد تحسنت هذه العملية مع ادخال الحلقة foreach , والتي تعتبر مألوفة جدا لمستخدمي Perl ..
FOREACH
-------------
الصيغة :

كود PHP:

foreach ( array as ([$key =>] $ value) {
statement
}


مثال على الدوران
EX.33

كود PHP:

<?
$lang=array(
"AR"=> "Arabic",
"EN"=> "English",
"FR"=> "France"
);
foreach ($lang as $id => $family){
echo "<li><b>$id يساوي $family</li><br>";
}
?>

الناتج كما بالصورة :


http://araleader.com/lesson/PHP/array.gif