دوال المصفوفات
الدالة 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++;
?>
المفضلات