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

من موسوعة حسوب
< PHP
ط نقل عبد اللطيف ايمش صفحة PHP/Function/array-replace إلى PHP/array replace: إعادة هيكلة التوثيق
 
(10 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<nowiki><noinclude>{{DISPLAYTITLE:<code>array-replace()</code>}}</nowiki><nowiki></noinclude></nowiki>
<noinclude>{{DISPLAYTITLE:array_replace()}}</noinclude>
(PHP 5 >= 5.3.0, PHP 7)


(PHP 4 >= 4.0.5, PHP 5, PHP 7)
تستبدل الدالة <code>array_replace()‎</code> عناصر المصفوفات المُمررة إلى داخل المصفوفة الأولى.
 
تختزل الدالة  array_reduce()‎ المصفوفة إلى قيمة واحدة باستخدام دالة مُعرَّفة من المستخدم callback.


== الوصف ==
== الوصف ==
<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>تطبق الدالة array_reduce()<code></code> بشكل تكراري دالة <code>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> ===
<syntaxhighlight lang="php">
mixed callback ( mixed $carry , mixed $item )
</syntaxhighlight>
 
=== <code>carry</code> ===
يحتفظ بالقيمة المُعادة من التكرار السابق؛ ويحمل قيمة <code>initial</code> في حالة التكرار الأول.


=== <code>item</code> ===
=== <code>array2</code> ===
يحمل قيمة التكرار الحالي.
المصفوفة التي يُستخرج منها العناصر.


=== <code>initial</code> ===
=== <code>...</code> ===
تستخدم <code>initial</code> الاختيارية في بداية العملية إذا كانت متاحة، أو كنتيجة نهائية في حالة إذا كانت المصفوفة فارغة.
المزيد من المصفوفات التي يُستخرج منها العناصر. وتُكتب القيم من المصفوفات اللاحقة فوق القيم السابقة.


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


== أمثلة ==
== أمثلة ==
المثال 1: مثال على الدالة array_reduce()‎<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>


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


== مصادر ==
== مصادر ==
* صفحة الدالة 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]]

المراجعة الحالية بتاريخ 03:49، 4 أبريل 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()‎: دمج مصفوفة أو أكثر.

مصادر