الفرق بين المراجعتين ل"PHP/array walk"

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
ط (استبدال النص - 'PHP/Types/callable' ب'PHP/callable')
ط (استبدال النص - 'PHP\/Function\/([^|]*)' ب'PHP/$1')
سطر 23: سطر 23:
 
إذا لزم أن تعمل الدالة <code>callback</code> مع القيم الفعلية للمصفوفة، فيجب تعيين أول معامل للدالة <code>callback</code> [[PHP/references|كمرجع]]. بعد ذلك، تُجرى أي تغييرات على هذه العناصر في المصفوفة الأصلية نفسها.
 
إذا لزم أن تعمل الدالة <code>callback</code> مع القيم الفعلية للمصفوفة، فيجب تعيين أول معامل للدالة <code>callback</code> [[PHP/references|كمرجع]]. بعد ذلك، تُجرى أي تغييرات على هذه العناصر في المصفوفة الأصلية نفسها.
  
ملاحظة: تطلق العديد من الدوال الداخلية (على سبيل المثال <code>[[PHP/Function/strtolower|strtolower()‎]]</code>) تحذيرًا إذا مُرِّرَ عدد أكبر من العدد المتوقع من الوسائط والتي لا يمكن استخدامها مباشرة كدوال <code>callback</code>.
+
ملاحظة: تطلق العديد من الدوال الداخلية (على سبيل المثال <code>[[PHP/strtolower|strtolower()‎]]</code>) تحذيرًا إذا مُرِّرَ عدد أكبر من العدد المتوقع من الوسائط والتي لا يمكن استخدامها مباشرة كدوال <code>callback</code>.
  
 
من المحتمل أن تتغير قيم <code>array</code> فقط؛ ولكن لا يمكن تغيير هيكلها، أي أن المبرمج لا يمكنه إضافة عناصر أو إلغاء تعيينها أو إعادة ترتيبها. وإذا لم تحترم دوال رد النداء <code>callback</code> هذا الشرط، فإن سلوك هذه الدالة سيكون غير محدد وغير قابل للتنبؤ.
 
من المحتمل أن تتغير قيم <code>array</code> فقط؛ ولكن لا يمكن تغيير هيكلها، أي أن المبرمج لا يمكنه إضافة عناصر أو إلغاء تعيينها أو إعادة ترتيبها. وإذا لم تحترم دوال رد النداء <code>callback</code> هذا الشرط، فإن سلوك هذه الدالة سيكون غير محدد وغير قابل للتنبؤ.
سطر 76: سطر 76:
 
== أنظر أيضًا ==
 
== أنظر أيضًا ==
 
* الدالة <code>[[PHP/array-walk-recursive|()‎array_walk_recursive]]</code>: تطبيق دالة مستخدم تكراريًا على كل عنصر في المصفوفة.
 
* الدالة <code>[[PHP/array-walk-recursive|()‎array_walk_recursive]]</code>: تطبيق دالة مستخدم تكراريًا على كل عنصر في المصفوفة.
* <code>[[PHP/Function/iterator|iterator_apply()‎]]</code>: استدعاء دالة لكل عنصر في مُكرِّر.
+
* <code>[[PHP/iterator|iterator_apply()‎]]</code>: استدعاء دالة لكل عنصر في مُكرِّر.
* <code>[[PHP/Function/list|list()‎]]</code>: تعيين المتغيرات كما لو كانت مصفوفة.
+
* <code>[[PHP/list|list()‎]]</code>: تعيين المتغيرات كما لو كانت مصفوفة.
* <code>[[PHP/Function//each|each()‎]]</code>: إعادة كل من المفتاح والقيمة المقابلة الحاليين من المصفوفة وتحريك مؤشرها.
+
* <code>[[PHP//each|each()‎]]</code>: إعادة كل من المفتاح والقيمة المقابلة الحاليين من المصفوفة وتحريك مؤشرها.
* <code>[[PHP/Function/call-user-func-array|call_user_func_array()]]‎</code>: استدعاء دالة callback مع مصفوفة من المعاملات.
+
* <code>[[PHP/call-user-func-array|call_user_func_array()]]‎</code>: استدعاء دالة callback مع مصفوفة من المعاملات.
* <code>[[PHP/Function/map|array_map()‎]]</code>: تطبيق دالة callback على عناصر المصفوفات المٌدخلة.
+
* <code>[[PHP/map|array_map()‎]]</code>: تطبيق دالة callback على عناصر المصفوفات المٌدخلة.
 
* معلومات حول النوع <code>[[PHP/callable|callback]]</code>.
 
* معلومات حول النوع <code>[[PHP/callable|callback]]</code>.
 
* حلقة <code>[[PHP/foreach|foreach]]</code>
 
* حلقة <code>[[PHP/foreach|foreach]]</code>

مراجعة 03:42، 4 أبريل 2018

(PHP 4, PHP 5, PHP 7)

تُطبّق الدالة array_walk()‎ الدالة المُقدمة من المستخدم على كل عنصر في المصفوفة.

الوصف

bool array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] )

تُطبّق الدالة array_walk()‎ الدالة callback المعرفة بواسطة المستخدم على كل عنصر من المصفوفة array.

ولا تتأثر الدالة array_walk()‎ بالمؤشر الداخلي للمصفوفة array. وسوف تُطبّق الدالة array_walk()‎ على المصفوفة بأكملها بغض النظر عن موضع المؤشر (pointer location).

المعاملات

array

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

callback

تأخذ عادةً الدالة callback المُعرّفة من المستخدم معامليْن. الأول قيمة معامل المصفوفة array، والثاني المفتاح أو الفهرس.

ملاحظة:

إذا لزم أن تعمل الدالة callback مع القيم الفعلية للمصفوفة، فيجب تعيين أول معامل للدالة callback كمرجع. بعد ذلك، تُجرى أي تغييرات على هذه العناصر في المصفوفة الأصلية نفسها.

ملاحظة: تطلق العديد من الدوال الداخلية (على سبيل المثال strtolower()‎) تحذيرًا إذا مُرِّرَ عدد أكبر من العدد المتوقع من الوسائط والتي لا يمكن استخدامها مباشرة كدوال callback.

من المحتمل أن تتغير قيم array فقط؛ ولكن لا يمكن تغيير هيكلها، أي أن المبرمج لا يمكنه إضافة عناصر أو إلغاء تعيينها أو إعادة ترتيبها. وإذا لم تحترم دوال رد النداء callback هذا الشرط، فإن سلوك هذه الدالة سيكون غير محدد وغير قابل للتنبؤ.

userdata

إذا توافر المعامل userdata الاختياري، فسيمرر كمعامل ثالث إلى callback.

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

تُعيد الدالة array_walk()‎ القيمة TRUE عند نجاح عملها أو FALSE عند فشل تنفيذها.

الأخطاء والاستثناءات

بدءًا من PHP 7.1.0، سيُطلَق الخطأ ArgumentCountError إذا كانت دالة رد النداء callback تتطلب أكثر من معاملَيْن (القيمة والمفتاح لعنصر المصفوفة). في السابق، إذا تتطلبت دالة رد النداء callback أكثر من معاملَيْن، فسيتولد خطأٌ من المستوى E_WARNING في كل مرة تستدعي فيها الدالةُ array_walk()‎ الدالةَ callback.

أمثلة

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

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");

function test_alter(&$item1, $key, $prefix)
{
    $item1 = "$prefix: $item1";
}

function test_print($item2, $key)
{
    echo "$key. $item2<br />\n";
}

echo "Before ...:\n";
array_walk($fruits, 'test_print');

array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";

array_walk($fruits, 'test_print');
?>

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

Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple

أنظر أيضًا

  • الدالة ()‎array_walk_recursive: تطبيق دالة مستخدم تكراريًا على كل عنصر في المصفوفة.
  • iterator_apply()‎: استدعاء دالة لكل عنصر في مُكرِّر.
  • list()‎: تعيين المتغيرات كما لو كانت مصفوفة.
  • each()‎: إعادة كل من المفتاح والقيمة المقابلة الحاليين من المصفوفة وتحريك مؤشرها.
  • call_user_func_array(): استدعاء دالة callback مع مصفوفة من المعاملات.
  • array_map()‎: تطبيق دالة callback على عناصر المصفوفات المٌدخلة.
  • معلومات حول النوع callback.
  • حلقة foreach

مصادر