الدالة each()‎ في PHP

من موسوعة حسوب
< PHP

(PHP 4, PHP 5, PHP 7)

تُعيد الدالة each()‎ كلًا من المفتاح والقيمة المقابلة الحاليين من المصفوفة وتُحرك مؤشرها للأمام.

تحذير: أُلغيت هذه الدالة اعتبارًا من PHP 7.2.0. الاعتماد على هذه الدالة غير محبذ على الإطلاق.

الوصف

array each ( array &$array )

تُعيد هذه الدالة كلًا من المفتاح والقيمة الحاليْيَن من مصفوفة وتُحرك مؤشر المصفوفة للأمام.

بعد تنفيذ الدالة each()‎، سيُترك مؤشر المصفوفة على العنصر التالي، أو بعد العنصر الأخير إذا كان قد وصل إلى نهاية المصفوفة. إذا كنت تريد المرور على المصفوفة مرة أخرى باستخدام each()‎، يجب عليك استخدام الدالة reset()‎ أولًا.

المعاملات

array

المصفوفة المُدخَلة.

القيم المعادة

تُعيد هذه الدالة كلًا من المفتاح والقيمة الحاليْيَن من المصفوفة array. وتُعيد هذا الزوج على هيئة مصفوفة مكونة من أربعة عناصر، باستخدام المفاتيح 0 و 1 و key وvalue . تحتوي العناصر 0 و key على اسم المفتاح لعنصر المصفوفة، بينما تحتوي العناصر 1 وvalue على البيانات.

إذا تخطى المؤشر الداخلي نهاية محتويات المصفوفة، فستُعيد الدالة each()‎ القيمة FALSE.

أمثلة

المثال 1: أمثلة على الدالة each()‎

<?php
$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);
print_r($bar);
?>

يحتوي المتغير bar$ الآن على أزواج المفاتيح والقيم التالية:

Array
(
    [1] => bob
    [value] => bob
    [0] => 0
    [key] => 0
)
<?php
$foo = array("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each($foo);
print_r($bar);
?>

يحتوي المتغير bar$ الآن على أزواج المفاتيح والقيم التالية:

Array
(
    [1] => Bob
    [value] => Bob
    [0] => Robert
    [key] => Robert
)

تستخدم الدالة each()‎ عادة بالتزامن مع الدالة list()‎ للمرور بالمصفوفة، وإليك مثالٌ على ذلك: المثال 2: مثال على المرور بمصفوفة باستخدام الدالة each()‎

<?php
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');

reset($fruit);
while (list($key, $val) = each($fruit)) {
    echo "$key => $val\n";
}
?>

سوف تكون مُخرجات المثال أعلاه كالتالي:

a => apple
b => banana
c => cranberry

تنبيه: نظرًا لأن تعيين مصفوفة إلى متغير آخر يعيد تعيين مؤشر المصفوفة الأصلي، فإن المثال السابق قد يتسبب في حدوث حلقة لا نهائية لو قمنا بتعيين fruit$ إلى متغير آخر داخل الحلقة.

تحذير: تقبل الدالة each()‎ أيضًا الكائنات، ولكن قد تعرض نتائج غير متوقعة. لذلك لا يُنصح بالمرور على خصائص الكائن مع الدالة each()‎.

انظر أيضًا

  • الدالة key()‎: جلب مفتاح من مصفوفة.
  • الدالة list()‎: بتعيين المتغيرات كما لو كانت مصفوفة.
  • الدالة current()‎: إعادة العنصر الحالي في مصفوفة.
  • الدالة reset()‎: تحريك المؤشر الداخلي لمصفوفة إلى أول عنصر.
  • الدالة next()‎: تحريك المؤشر الداخلي لمصفوفة إلى الأمام.
  • الدالة prev()‎: إرجاع مؤشر المصفوفة الداخلي إلى الخلف.
  • حلقة foreach.
  • Object Iteration.

مصادر