الفرق بين المراجعتين لصفحة: «PHP/array replace»

من موسوعة حسوب
< PHP
لا ملخص تعديل
إعادة إدخال بالكامل (أول إدخال كان لدالة أخرى)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:<code>array_reduce()‎ </code>}}</noinclude>
<noinclude>{{DISPLAYTITLE:array_replace()‎}}</noinclude>
(PHP 4 >= 4.0.5, PHP 5, PHP 7)
(PHP 5 >= 5.3.0, PHP 7)


تختزل الدالة <code>array_reduce()‎</code> المصفوفة إلى قيمة واحدة باستخدام دالة مُعرَّفة من المستخدم [[PHP/Types/callable|callback]].
تستبدل الدالة array_replace()‎ عناصر المصفوفات المُمررة إلى داخل المصفوفة الأولى.


== الوصف ==
== الوصف ==
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
mixed array_reduce ( array $array , callable $callback [, mixed $initial = NULL ] )
array array_replace ( array $array1 , array $array2 [, array $... ] )
</syntaxhighlight>تطبق الدالة <code>array_reduce()</code> بشكل تكراري دالة <code>[[PHP/Types/callable|callback]]</code> على عناصر <code>array</code>، وذلك لاختزال المصفوفة إلى قيمة واحدة.
</syntaxhighlight>تستبدل الدالة <code>array_replace()</code>‎ قيم المصفوفة <code>array1</code> بقيم لها نفس المفاتيح في كل من المصفوفات التالية. في حالة وجود مفتاح من المصفوفة الأولى في المصفوفة الثانية، تُستبدل قيمته بقيمة المفتاح المقابل من المصفوفة الثانية. وإذا كان المفتاح موجود في المصفوفة الثانية، وغير موجود في الأولى، فسيُنشأ في المصفوفة الأولى. أما إذا كان هناك مفتاح موجود في المصفوفة الأولى فقط، فسيُترك كما هو. في حالة تمرير عدة مصفوفات للاستبدال، فستعالج بالترتيب، وتكتب المصفوفات اللاحقة فوق القيم السابقة.
 
الدالة <code>array_replace()‎</code> غير تكرارية (recursive): سوف تستبدل القيم في المصفوفة الأولى بأي نوع موجود في المصفوفة الثانية.


== المعاملات ==
== المعاملات ==


=== <code>array</code> ===
=== <code>array1</code> ===
المصفوفة المُدخلة.
المصفوفة التي يُستبدل العناصر فيها.


=== <code>callback</code> ===
=== <code>array2</code> ===
<syntaxhighlight lang="php">
المصفوفة التي يُستخرج منها العناصر.
mixed callback ( mixed $carry , mixed $item )
</syntaxhighlight>


==== <code>carry</code> ====
=== <code>...</code> ===
يحتفظ بالقيمة المُعادة من التكرار السابق؛ ويحمل قيمة <code>initial</code> في حالة التكرار الأول.
المزيد من المصفوفات التي يُستخرج منها العناصر. وتُكتب القيم من المصفوفات اللاحقة فوق القيم السابقة.


==== <code>item</code> ====
== القيم المُعادة ==
يحمل قيمة التكرار الحالي.
تعيد الدالة مصفوفة، أو القيمة <code>NULL</code> في حالة حدوث خطأ.
 
=== <code>initial</code> ===
تستخدم <code>initial</code> الاختيارية في بداية العملية إذا كانت متاحة، أو كنتيجة نهائية في حالة إذا كانت المصفوفة فارغة.
 
== القيم المعادة ==
تُعيد القيمة الناتجة.
 
تُعيد الدالة <code>array_reduce()‎</code> القيمة <code>NULL</code> إذا كانت المصفوفة فارغة ولم يمرر المعامل <code>initial</code>.
 
== سجل التغييرات ==
{| class="wikitable"
!الإصدار
!الوصف
|-
|5.3.0
|تغيير <code>initial</code> للسماح بالنوع المختلط <code>mixed</code>، والذي كان عدد صحيح <code>integer</code> في وقت سابق.
|}


== أمثلة ==
== أمثلة ==
المثال 1: مثال على الدالة <code>array_reduce()‎</code><syntaxhighlight lang="php">
المثال 1: مثال على الدالة <code>array_replace()‎</code><syntaxhighlight lang="php">
<?php
<?php
function sum($carry, $item)
$base = array("orange", "banana", "apple", "raspberry");
{
$replacements = array(0 => "pineapple", 4 => "cherry");
   $carry += $item;
$replacements2 = array(0 => "grape");
   return $carry;
$basket = array_replace($base, $replacements, $replacements2);
}
print_r($basket);
function product($carry, $item)
{
   $carry *= $item;
   return $carry;
}
$a = array(1, 2, 3, 4, 5);
$x = array();
var_dump(array_reduce($a, "sum")); // int(15)
var_dump(array_reduce($a, "product", 10)); // int(1200), لأنَّ: 10*1*2*3*4*5
var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"
?>
?>
 
</syntaxhighlight>سوف تكون مُخرجات المثال أعلاه كالتالي:<syntaxhighlight lang="php">
Array
(
    [0] => grape
    [1] => banana
    [2] => apple
    [3] => raspberry
    [4] => cherry
)
</syntaxhighlight>
</syntaxhighlight>


== انظر أيضًا ==
== انظر أيضًا ==
* الدالة <code>[[PHP/Function/array-filter|array_filter()]]</code>‎: ترشيح عناصر مصفوفة باستخدام دالة callback.
* <code>[[PHP/Function/array-replace-recursive|array_replace_recursive()]]</code>‎: استبدال عناصر المصفوفات المُمررة إلى المصفوفة الأولى تكراريًا (recursively).
* الدالة <code>[[PHP/Function/array-map|array_map()‎]]</code>: تطبيق دالة callback على عناصر المصفوفات المحددة.
* <code>[[PHP/Function/array-merge|array_merge()]]</code>‎: دمج مصفوفة أو أكثر.
* الدالة <code>[[PHP/Function/array-unique|array_unique()]]</code>‎: إزالة القيم المكررة من المصفوفة.
* الدالة <code>[[PHP/Function/array-count-values|array_count_values​​()‎]]</code>: حساب جميع قيم عناصر المصفوفة.


== مصادر ==
== مصادر ==
* [http://php.net/manual/en/function.array-reduce.php صفحة الدالة array_reduce()‎ في توثيق PHP الرسمي.]
* [http://php.net/manual/en/function.array-replace.php صفحة الدالة <code>array_replace()</code>‎ في توثيق PHP الرسمي].
 
[[تصنيف:PHP]]
[[تصنيف:PHP]]
[[تصنيف:PHP Function]]
[[تصنيف:PHP Function]]
[[تصنيف:PHP Array]]
[[تصنيف:PHP Array]]

مراجعة 13:19، 21 مارس 2018

(PHP 5 >= 5.3.0, PHP 7)

تستبدل الدالة array_replace()‎ عناصر المصفوفات المُمررة إلى داخل المصفوفة الأولى.

الوصف

array array_replace ( array $array1 , array $array2 [, array $... ] )

تستبدل الدالة array_replace()‎ قيم المصفوفة array1 بقيم لها نفس المفاتيح في كل من المصفوفات التالية. في حالة وجود مفتاح من المصفوفة الأولى في المصفوفة الثانية، تُستبدل قيمته بقيمة المفتاح المقابل من المصفوفة الثانية. وإذا كان المفتاح موجود في المصفوفة الثانية، وغير موجود في الأولى، فسيُنشأ في المصفوفة الأولى. أما إذا كان هناك مفتاح موجود في المصفوفة الأولى فقط، فسيُترك كما هو. في حالة تمرير عدة مصفوفات للاستبدال، فستعالج بالترتيب، وتكتب المصفوفات اللاحقة فوق القيم السابقة.

الدالة array_replace()‎ غير تكرارية (recursive): سوف تستبدل القيم في المصفوفة الأولى بأي نوع موجود في المصفوفة الثانية.

المعاملات

array1

المصفوفة التي يُستبدل العناصر فيها.

array2

المصفوفة التي يُستخرج منها العناصر.

...

المزيد من المصفوفات التي يُستخرج منها العناصر. وتُكتب القيم من المصفوفات اللاحقة فوق القيم السابقة.

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

تعيد الدالة مصفوفة، أو القيمة NULL في حالة حدوث خطأ.

أمثلة

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

<?php
$base = array("orange", "banana", "apple", "raspberry");
$replacements = array(0 => "pineapple", 4 => "cherry");
$replacements2 = array(0 => "grape");
$basket = array_replace($base, $replacements, $replacements2);
print_r($basket);
?>

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

Array
(
    [0] => grape
    [1] => banana
    [2] => apple
    [3] => raspberry
    [4] => cherry
)

انظر أيضًا

  • array_replace_recursive()‎: استبدال عناصر المصفوفات المُمررة إلى المصفوفة الأولى تكراريًا (recursively).
  • array_merge()‎: دمج مصفوفة أو أكثر.

مصادر