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

من موسوعة حسوب
< PHP
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:<code>array_walk()‎</code>}}</noinclude> (PHP 4, PHP 5, PHP 7) تُطبّق الدالة <code>array_walk()‎</code> الدالة المُ...')
 
سطر 10: سطر 10:
 
</syntaxhighlight>تُطبّق الدالة <code>array_walk()</code>‎ الدالة <code>callback</code> المعرفة بواسطة المستخدم على كل عنصر من المصفوفة <code>array</code>.
 
</syntaxhighlight>تُطبّق الدالة <code>array_walk()</code>‎ الدالة <code>callback</code> المعرفة بواسطة المستخدم على كل عنصر من المصفوفة <code>array</code>.
  
ولا تتأثر الدالة array_walk()‎ بالمؤشر الداخلي للمصفوفة array. وسوف تُطبّق الدالة array_walk()‎ على المصفوفة بأكملها بغض النظر عن موضع المؤشر (pointer location).
+
ولا تتأثر الدالة <code>array_walk()‎</code> بالمؤشر الداخلي للمصفوفة <code>array</code>. وسوف تُطبّق الدالة <code>array_walk()‎</code> على المصفوفة بأكملها بغض النظر عن موضع المؤشر (pointer location).
  
 
== المعاملات ==
 
== المعاملات ==
سطر 18: سطر 18:
  
 
=== <code>callback</code> ===
 
=== <code>callback</code> ===
تأخذ عادةً الدالة <s>callback</s> المُعرّفة من المستخدم معامليْن. الأول قيمة معامل المصفوفة <code>array</code>، والثاني المفتاح أو الفهرس.<blockquote>ملاحظة:</blockquote><blockquote>إذا لزم أن تعمل الدالة <code>callback</code> مع القيم الفعلية للمصفوفة، فيجب تعيين أول معامل للدالة <code>callback</code> [[PHP/References|كمرجع]]. بعد ذلك، تُجرى أي تغييرات على هذه العناصر في المصفوفة الأصلية نفسها.</blockquote><blockquote>ملاحظة: تطلق العديد من الدوال الداخلية (على سبيل المثال <code>[[PHP/Function/strtolower|strtolower()‎]]</code>) تحذيرًا إذا مُرِّرَ عدد أكبر من العدد المتوقع من الوسائط والتي لا يمكن استخدامها مباشرة كدوال <code>callback</code>.</blockquote>من المحتمل أن تتغير قيم <code>array</code> فقط؛ ولكن لا يمكن تغيير هيكلها، أي أن المبرمج لا يمكنه إضافة عناصر أو إلغاء تعيينها أو إعادة ترتيبها. وإذا لم تحترم دوال رد النداء <code>callback</code> هذا الشرط، فإن سلوك هذه الدالة سيكون غير محدد وغير قابل للتنبؤ.
+
تأخذ عادةً الدالة <code>callback</code> المُعرّفة من المستخدم معامليْن. الأول قيمة معامل المصفوفة <code>array</code>، والثاني المفتاح أو الفهرس.
 +
 
 +
ملاحظة:
 +
 
 +
إذا لزم أن تعمل الدالة <code>callback</code> مع القيم الفعلية للمصفوفة، فيجب تعيين أول معامل للدالة <code>callback</code> [[PHP/References|كمرجع]]. بعد ذلك، تُجرى أي تغييرات على هذه العناصر في المصفوفة الأصلية نفسها.
 +
 
 +
ملاحظة: تطلق العديد من الدوال الداخلية (على سبيل المثال <code>[[PHP/Function/strtolower|strtolower()‎]]</code>) تحذيرًا إذا مُرِّرَ عدد أكبر من العدد المتوقع من الوسائط والتي لا يمكن استخدامها مباشرة كدوال <code>callback</code>.
 +
 
 +
من المحتمل أن تتغير قيم <code>array</code> فقط؛ ولكن لا يمكن تغيير هيكلها، أي أن المبرمج لا يمكنه إضافة عناصر أو إلغاء تعيينها أو إعادة ترتيبها. وإذا لم تحترم دوال رد النداء <code>callback</code> هذا الشرط، فإن سلوك هذه الدالة سيكون غير محدد وغير قابل للتنبؤ.
  
 
=== <code>userdata</code> ===
 
=== <code>userdata</code> ===
إذا توفّر المعامل <code>userdata</code> الاختياري، فسيمرر كمعامل ثالث إلى <code>callback</code>.
+
إذا توافر المعامل <code>userdata</code> الاختياري، فسيمرر كمعامل ثالث إلى <code>callback</code>.
  
 
== القيم المعادة ==
 
== القيم المعادة ==
سطر 27: سطر 35:
  
 
== الأخطاء والاستثناءات ==
 
== الأخطاء والاستثناءات ==
بدءًا من PHP 7.1.0، سيُطلَق الخطأ <code>ArgumentCountError</code> إذا كانت دالة رد النداء <code>callback</code> تتطلب أكثر من معاملَيْن (القيمة والمفتاح لعنصر المصفوفة). في السابق، إذا تتطلبت دالة رد النداء <code>callback</code> أكثر من معاملَيْن، فسيتولد خطأٌ من المستوى <code>[[PHP/Errors/errorfunc.constants|E_WARNING]]</code> في كل مرة تستدعي فيها الدالةُ <code>array_walk()‎</code> الدالةَ <code>callback</code>.
+
بدءًا من PHP 7.1.0، سيُطلَق الخطأ <code>ArgumentCountError</code> إذا كانت دالة رد النداء <code>callback</code> تتطلب أكثر من معاملَيْن (القيمة والمفتاح لعنصر المصفوفة). في السابق، إذا تتطلبت دالة رد النداء <code>callback</code> أكثر من معاملَيْن، فسيتولد خطأٌ من المستوى <code>E_WARNING</code> في كل مرة تستدعي فيها الدالةُ <code>array_walk()‎</code> الدالةَ <code>callback</code>.
  
 
== أمثلة ==
 
== أمثلة ==
سطر 78: سطر 86:
  
 
== مصادر ==
 
== مصادر ==
* [http://php.net/manual/en/function.array-walk.php صفحة الدالة <code>array_walk()‎</code> في توثيق PHP الرسمي].
+
* [http://php.net/manual/en/function.array-walk.php صفحة الدالة array_walk في توثيق PHP الرسمي].
 
[[تصنيف:PHP]]
 
[[تصنيف:PHP]]
 
[[تصنيف:PHP Function]]
 
[[تصنيف:PHP Function]]
 
[[تصنيف:PHP Array]
 
[[تصنيف:PHP Array]

مراجعة 03:06، 22 مارس 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

مصادر

[[تصنيف:PHP Array]