لغة PHP (الدرس السابع) تابع المصفوفات في لغة php


دوال المصفوفات

الدالة key  
لنفرض أن لدينا مصفوفة مكونة من عنصرين :
مثال :
$s= array ("على","محمد");
الآن لنضف إليها هذه السطور
<?
$s= array (“على”,”محمد”);
$t=key ($s);
echo $t;
?>
يقوم الأمر key بإيجاد رقم الفهرسه (index) العنصر النشط حالياً .... وهو الرقم صفر حيث أننا لم نضع فهرسة وهذه هي الفهرسة التي وضعها الـPHP تلقائياً عندما لم نضع فهرسة ... قد تحيرك كلمة النشط لكن ستعرف أننا  نستطيع التجول بين عناصر المصفوفة لاحقاً .
قد يكون رقم الفهرسة حروف أو كلمات

مثال :
<?
$s= array (“ع”=>“على”,”م”=>”محمد”);
$t=key ($s);
echo $t;
?>


الدالة ()current
تقوم الدالة current بإيجاد القيمة  لعنصر المصفوفة الحالى (index value)  .
مثال :
<?
$s= array (“ع”=>“على”,”م”=>”محمد”);
$p=current ($s);
echo $p;
?>
في المثال السابق قمنا بإيجاد القيمة الحالية للعنصر النشط .... لاحظ أننا أوجدنا بالأمر key رقم الفهرسة بينما أوجدنا بالأمر current القيمة للعنصر المفهرس .

كيف يمكننا تنشيط العناصر الاخري للمصفوفه ؟!

يمكننا ذلك عن طريق الدالتين()next  و prev اللتان تقومان بالتجول بين عناصر المصفوفة ..... لنفرض أن لدينا مصفوفة تتكون من ثلاثة عناصر
مثال :
<?
$s= array (“ع”=>“على”,”م”=>”محمد”,”ا”=>”احمد”);
echo key($s).”<br>”;
echo current($s) .”<br>”;
?>
لقد قمنا في هذا المثال بطباعة قيمة رقم الفهرسة للعنصر الحالى وقيمته ( اقصد برقم الفهرسة الحرف(ع) واقصد بالقيمة (على) .... لنقم الآن بالتجول بين عناصر المصفوفة ولنر نتيجة الطباعة .

مثال  :
<?
$s= array (“ع”=>“على”,”م”=>”محمد”,”ا”=>”احمد”);
next($s);
echo key($s).”<br>”;
echo current($s) .”<br>”;
?>

<?
$s= array (“ع”=>“على”,”م”=>”محمد”,”ا”=>”احمد”);
next($s);
next($s);
echo key($s).”<br>”;
echo current($s) .”<br>”;
?>
لاحظ أننا كتبنا الدالة()next قبل أن نقوم بالإنتقال لكي يتم تنشيط العنصر الثاني في أول مثال ولتنشيط العنصر الثالث في ثالث مثال (ولاحظ أننا كتبنا()next مرتين )  .

يمكننا الرجوع لتنشيط العنصر السابق بوضع الدالة prev() فمثلاً يمكننا تعديل المثال التالى :
<?
$s= array (“ع”=>“على”,”م”=>”محمد”,”ا”=>”احمد”);
next($s);
next($s);
prev($s);
echo key($s).”<br>”;
echo current($s) .”<br>”;
?>
فسيقوم الـPHP في هذه الحاله طباعة العنصر الثاني وليس الثالث لأنه تم التراجع خطوه عن طريق prev()

ماذا سيحصل إذا قمنا بإضافة عنصر على مصفوفة غير محدودة الفهرسة ؟!
لنفرض أن لدينا مصفوفة وأضفنا إليها عنصر غير محدد الفهرسة . مثل :
<?
$s= array (12=>“على”,5=>”محمد”,44=>”احمد”);
$s[ ]= “هشام”;
Next($s);
Next($s);
Next($s);
Echo key ($s).”<br>”;
Echo current( $s ).”<br>”;
?>

سيقوم الـPHP ببساطة بالبحث عن أكبر رقم فهرسة وبعد ذلك يبدأ بإعطاء الفهرسة تسلسلاً بعده فإذا كانت أرقام الفهرسة حروفاً بدأ من الصفر في اعطاء الرقم .. ولاحظ في هذا المثال بأنه قام بإعطاء العنصر الرقم 45 لأن أكبر عنصر في المصفوفة هو 44 وعلى ذلك قام بإعطاء الأرقام تسلسلاً بعد هذا الرقم .

الدالة List و Each
لنفرض أنك قد قمت بصنع مصفوفة غير مفهرسة بالترتيب
مثال :
<?
$s= array (12=>“على”,5=>”محمد”,44=>”احمد”);
?>
على ذلك دعنا نخبرك بخبر سار وهو أنك تستطيع أن تجعل حياتك مع PHP أسهل مع حياتك مع نفسك !
While (list(ارقام الفهرسة  Index,Element valueقيمة العنصر  )=each (array)
تستطيع بواسطة هذه الدالتين وعن طريق التكرار while  استخراج جميع العناصر الموجودة في المصفوفة
While (list($e,$r) = each ($s))
{
echo “<br> $e<br> $r”;
}
أولاً أنت تقوم بتسمية متغيرين واحد منهما لرقم الفهرسة ($e) والثاني للعنصر ($r) ويمكننا تسميتهما بأي اسم وفي حالة ما إذا أردنا عرض العنصر فقط أو معرفة العنصر فقط فيمكننا حذف ($e) ولكننا لانحذف الفاصلة
While (list(,$r) = each ($s))
{
echo “<br> $e<br> $r”;
}
لنعد الى المثال الذي فيه رقم الفهرسة والعنصر ... سيقوم التكرار بوضع رقم الفهرسة (الذي قد يكون نصياً) في المتغير $e وسيضع قيمة العنصر الذي رقم الفهرسة له هو $e  في المتغير $r  ثم سيقوم بطباعة العناصر حتي ينتهي منها جميعها ...
ملاحظة مهمة : إذا لم تقم بتعريف فهرسة للمصفوفة (حروف أو أرقام أيا كان) فسيتم استخدام العناصر عندما يطلب التكرار الفهارس .
مثال :
<?
$e=array("fsda","terhfgfd","tewr");
While (list ($I,$V)=each($e))
{
echo "<br>$e[$I]";
}
?>

لاحظ مع Hننا طلبنا طباعة الفهرسة (index) إلا أنه تم أخذ العناصر(elements) بدلاً من الفهرسة

يمكننا بواسطة هذه الدالة صناعة أشياء مفيده وكمثال لذلك لنفرض أن لدينا مصفوفة أرقام هواتف ونريد أن نخرج هذه المصفوفة على جدول html  فسنستطيع صناعة هذا الجدول عن طريق التكرار السابق بكل سهولة .
مثال :
<table align='center' dir = "rtl" border="1" width="100%" cellspacing="0" bordercolorlight="#000000" bordercolordark="#000000" bordercolor="#000000">
<tr>
    <td align='center'>الاسم</td>
    <td align='center'>رقم التلفون</td>
  </tr>
<?
$s = array (658=>"عادل" ,456546=>"سالم" , 465873);
While (list($e,$r) = each ($s))
{
echo "<tr><td align='center'>". $r . "</td><td align='center'>" .$e . "</td></tr>";
}
?>
</table>
أرايت كيف استخرجنا جميع أرقام التلفونات في جدول بواسطه تكرار بسيط ، يمكنك صناعة الأكثر واختصار الكثير من الوقت على ذلك إذا كانت المصفوفة تحتوي على المئات  من الأرقام بواسطة هذا الكود بدلاً من أن تكتب الكود على شكل html وتكتب البيانات وتتعب نفسك .

يمكنك أيضا معرفة عدد العناصر في مصفوفة معينة إذا كنت تريد معرفة عددها وذلك بالطريقة التالية :
<?
$s= array (12=>“على”,5=>”محمد”,44=>”احمد”);
$S=0;
While (list($E,$r) = each ($s))
{
$S++;
}
ECHO “عدد عناصر المصفوفه ” . $S++;
?>

Share this

مواضيع ذات صلة

Previous
Next Post »

ليست هناك تعليقات:

إرسال تعليق