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

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


== (PHP 4 >= 4.0.6, PHP 5, PHP 7) ==
تنفذ الدالة <code>array_map()‎</code> دالةً أخرى يحددها المستخدم على كل عنصر موجود في المصفوفات المُمرََرَة.
تنفذ الدالة array_map()‎ دالةً أخرى يحددها المستخدم على كل عنصر موجود في المصفوفات المُمرََرَة.


== الوصف ==
== الوصف ==
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
array array_map ( callable $callback , array $array1 [, array $... ] )
array array_map ( callable $callback , array $array1 [, array $... ] )
</syntaxhighlight>تعيد الدالة كل عناصر المصفوفة array1 بعد تنفيذ الدالة callback على كل عنصر من عناصرها. يجب أن يساوي عدد المعاملات التي تقبلها الدالة callback عدد المصفوفات المُمَرََرَة إلى الدالة array_map()‎.
</syntaxhighlight>تعيد الدالة كل عناصر المصفوفة <code>array1</code> بعد تنفيذ الدالة <code>callback</code> على كل عنصر من عناصرها. يجب أن يساوي عدد المعاملات التي تقبلها الدالة <code>callback</code> عدد المصفوفات المُمَرََرَة إلى الدالة <code>array_map()‎</code>.


== المعاملات ==
== المعاملات ==
callback<syntaxhighlight lang="php">
 
=== <code>callback</code> ===
<syntaxhighlight lang="php">
mixed callback (mixed $parameter1 [, mixed $...])
mixed callback (mixed $parameter1 [, mixed $...])
</syntaxhighlight>
</syntaxhighlight>
سطر 16: سطر 18:
دالة يحددها المستخدم لتنفيذها على كل عنصر بالمصفوفة.
دالة يحددها المستخدم لتنفيذها على كل عنصر بالمصفوفة.


array1
=== <code>array1</code> ===
 
مصفوفة تحتوي على العناصر التي ستمر الدالة عليها.
مصفوفة تحتوي على العناصر التي ستمر الدالة عليها.


=== <code></code> ===
 
قائمة متغيرة من المصفوفات المُمرََرَة إلى الدالة.
قائمة متغيرة من المصفوفات المُمرََرَة إلى الدالة.


== القيم المعادة ==
== القيم المعادة ==
تعيد الدالة مصفوفةً تحتوي على كل عناصر المصفوفة array1 بعد تنفيذ الدالة callback على كلٍ منها.
تعيد الدالة مصفوفةً تحتوي على كل عناصر المصفوفة <code>array1</code> بعد تنفيذ الدالة <code>callback</code> على كلٍ منها.


== أمثلة ==
== أمثلة ==
المثال 1: مثال بسيط عن استخدام الدالة array_map()‎<syntaxhighlight lang="php">
المثال 1: مثال بسيط عن استخدام الدالة <code>array_map()‎</code><syntaxhighlight lang="php">
 
<?php
<?php
function cube($n)
function cube($n)
{
{
 
    return($n * $n * $n);
   return($n * $n * $n);
 
}
}


$a = array(1, 2, 3, 4, 5);
$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
$b = array_map("cube", $a);
print_r($b);
print_r($b);
?>


?>
</syntaxhighlight>
</syntaxhighlight>


هذا يجعل قيمة المتغير ‎$b:<syntaxhighlight lang="php">
هذا يجعل قيمة المتغير ‎$b:<syntaxhighlight lang="php">
Array
Array
(
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)


   [0] => 1
</syntaxhighlight>
 
   [1] => 8
 
   [2] => 27
 
   [3] => 64


   [4] => 125
المثال 2: استخدام الدوال المجهولة (بدءًا من PHP 5.3.0)<syntaxhighlight lang="php">


)
</syntaxhighlight>
المثال 2: استخدام الدوال المجهولة (بدءًا من PHP 5.3.0):<syntaxhighlight lang="php">
<?php
<?php
$func = function($value) {
$func = function($value) {
 
    return $value * 2;
   return $value * 2;
 
};
};


print_r(array_map($func, range(1, 5)));
print_r(array_map($func, range(1, 5)));
?>


?>
</syntaxhighlight>


ناتج المثال السابق:<syntaxhighlight lang="php">
Array
Array
(
(
 
    [0] => 2
   [0] => 2
    [1] => 4
 
    [2] => 6
   [1] => 4
    [3] => 8
 
    [4] => 10
   [2] => 6
 
   [3] => 8
 
   [4] => 10
 
)
)
</syntaxhighlight>
</syntaxhighlight>المثال 3: استخدام أكثر من مصفوفة<syntaxhighlight lang="php">
 
المثال 3: استخدام أكثر من مصفوفة:<syntaxhighlight lang="php">
<?php
<?php
function show_Spanish($n, $m)
function show_Spanish($n, $m)
{
{
 
    return("The number $n is called $m in Spanish");
   return("The number $n is called $m in Spanish");
 
}
}


function map_Spanish($n, $m)
function map_Spanish($n, $m)
{
{
 
    return(array($n => $m));
   return(array($n => $m));
 
}
}


$a = array(1, 2, 3, 4, 5);
$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");
$b = array("uno", "dos", "tres", "cuatro", "cinco");


$c = array_map("show_Spanish", $a, $b);
$c = array_map("show_Spanish", $a, $b);
print_r($c);
print_r($c);


$d = array_map("map_Spanish", $a , $b);
$d = array_map("map_Spanish", $a , $b);
print_r($d);
print_r($d);
?>


?>
</syntaxhighlight>
</syntaxhighlight>


نتيجة المثال السابق:<syntaxhighlight lang="php">
نتيجة المثال السابق:<syntaxhighlight lang="text">
// printout of $c
// printout of $c
Array
Array
(
(
 
    [0] => The number 1 is called uno in Spanish
   [0] => The number 1 is called uno in Spanish
    [1] => The number 2 is called dos in Spanish
 
    [2] => The number 3 is called tres in Spanish
   [1] => The number 2 is called dos in Spanish
    [3] => The number 4 is called cuatro in Spanish
 
    [4] => The number 5 is called cinco in Spanish
   [2] => The number 3 is called tres in Spanish
 
   [3] => The number 4 is called cuatro in Spanish
 
   [4] => The number 5 is called cinco in Spanish
 
)
)


// printout of $d
// printout of $d
Array
Array
(
(
    [0] => Array
        (
            [1] => uno
        )


   [0] => Array
    [1] => Array
 
        (
       (
            [2] => dos
 
        )
           [1] => uno
 
       )
 
   [1] => Array
 
       (
 
           [2] => dos
 
       )
 
   [2] => Array
 
       (
 
           [3] => tres
 
       )
 
   [3] => Array
 
       (
 
           [4] => cuatro
 
       )
 
   [4] => Array


       (
    [2] => Array
        (
            [3] => tres
        )


           [5] => cinco
    [3] => Array
        (
            [4] => cuatro
        )


       )
    [4] => Array
        (
            [5] => cinco
        )


)
)
</syntaxhighlight>
</syntaxhighlight>


يُفضل أن يكون حجم المصفوفات الممررة إلى الدالة متساويًا، لأنها تقوم بتنفيذ الدالة callback على عناصر المصفوفات كلها بالتوازي في نفس الوقت. فستضاف عناصر فارغة إلى المصفوفات الأصغر كي تساوى حجم المصفوفات الأكبر.
يُفضل أن يكون حجم المصفوفات الممررة إلى الدالة متساويًا، لأنها تقوم بتنفيذ الدالة <code>callback</code> على عناصر المصفوفات كلها بالتوازي في نفس الوقت. فستضاف عناصر فارغة إلى المصفوفات الأصغر كي تساوى حجم المصفوفات الأكبر.
 
توفر هذه الخاصية ميزة إنشاء مصفوفة من المصفوفات عن طريق تمرير <code>NULL</code> كقيمة للمعامل <code>callback</code>.


توفر هذه الخاصية ميزة إنشاء مصفوفة من المصفوفات عن طريق تمرير NULL كقيمة للمعامل callback.
المثال 4: إنشاء مصفوفة من المصفوفات<syntaxhighlight lang="php">


المثال 4: إنشاء مصفوفة من المصفوفات:<syntaxhighlight lang="php">
<?php
<?php
$a = array(1, 2, 3, 4, 5);
$a = array(1, 2, 3, 4, 5);
$b = array("one", "two", "three", "four", "five");
$b = array("one", "two", "three", "four", "five");
$c = array("uno", "dos", "tres", "cuatro", "cinco");
$c = array("uno", "dos", "tres", "cuatro", "cinco");


$d = array_map(null, $a, $b, $c);
$d = array_map(null, $a, $b, $c);
print_r($d);
print_r($d);
?>


?>
</syntaxhighlight>
</syntaxhighlight>


نتيجة المثال السابق:<syntaxhighlight lang="php">
نتيجة المثال السابق:<syntaxhighlight lang="text">
Array
Array
(
(
    [0] => Array
        (
            [0] => 1
            [1] => one
            [2] => uno
        )


   [0] => Array
    [1] => Array
 
        (
       (
            [0] => 2
 
            [1] => two
           [0] => 1
            [2] => dos
 
        )
           [1] => one
 
           [2] => uno
 
       )
 
   [1] => Array
 
       (
 
           [0] => 2
 
           [1] => two
 
           [2] => dos
 
       )
 
   [2] => Array
 
       (
 
           [0] => 3
 
           [1] => three
 
           [2] => tres
 
       )


   [3] => Array
    [2] => Array
        (
            [0] => 3
            [1] => three
            [2] => tres
        )


       (
    [3] => Array
        (
            [0] => 4
            [1] => four
            [2] => cuatro
        )


           [0] => 4
    [4] => Array
 
        (
           [1] => four
            [0] => 5
 
            [1] => five
           [2] => cuatro
            [2] => cinco
 
        )
       )
 
   [4] => Array
 
       (
 
           [0] => 5
 
           [1] => five
 
           [2] => cinco
 
       )


)
)
سطر 290: سطر 204:
المثال 5: استخدام مفاتيح نصية:<syntaxhighlight lang="php">
المثال 5: استخدام مفاتيح نصية:<syntaxhighlight lang="php">
<?php
<?php
$arr = array("stringkey" => "value");
$arr = array("stringkey" => "value");
function cb1($a) {
function cb1($a) {
 
    return array ($a);
   return array ($a);
 
}
}
function cb2($a, $b) {
function cb2($a, $b) {
 
    return array ($a, $b);
   return array ($a, $b);
 
}
}
var_dump(array_map("cb1", $arr));
var_dump(array_map("cb1", $arr));
var_dump(array_map("cb2", $arr, $arr));
var_dump(array_map("cb2", $arr, $arr));
 
var_dump(array_map(null, $arr));
var_dump(array_map(null,  $arr));
 
var_dump(array_map(null, $arr, $arr));
var_dump(array_map(null, $arr, $arr));
?>


?>
</syntaxhighlight>
</syntaxhighlight>


نتيجة المثال السابق:<syntaxhighlight lang="php">
نتيجة المثال السابق:<syntaxhighlight lang="text">
array(1) {
array(1) {
 
  ["stringkey"]=>
 ["stringkey"]=>
  array(1) {
 
    [0]=>
 array(1) {
    string(5) "value"
 
  }
   [0]=>
 
   string(5) "value"
 
 }
 
}
}
array(1) {
array(1) {
 
  [0]=>
 [0]=>
  array(2) {
 
    [0]=>
 array(2) {
    string(5) "value"
 
    [1]=>
   [0]=>
    string(5) "value"
 
  }
   string(5) "value"
 
   [1]=>
 
   string(5) "value"
 
 }
 
}
}
array(1) {
array(1) {
 
  ["stringkey"]=>
 ["stringkey"]=>
  string(5) "value"
 
 string(5) "value"
 
}
}
array(1) {
array(1) {
 
  [0]=>
 [0]=>
  array(2) {
 
    [0]=>
 array(2) {
    string(5) "value"
 
    [1]=>
   [0]=>
    string(5) "value"
 
  }
   string(5) "value"
 
   [1]=>
 
   string(5) "value"
 
 }
 
}
}
</syntaxhighlight>
</syntaxhighlight>


== انظر أيضًا ==
== انظر أيضًا ==
* الدالة array_filter()‎: ترشِّح عناصر المصفوفة باستخدام دالة يحددها المستخدم.
* الدالة <code>[[PHP/array_filter|array_filter()‎]]</code>: ترشِّح عناصر المصفوفة باستخدام دالة يحددها المستخدم.
* الدالة array_map()‎: تنفِّذ الدالة التي يحددها المستخدم على كل عنصر من عناصر المصفوفة.
* الدالة <code>[[PHP/array_map|array_map()‎]]</code>: تنفِّذ الدالة التي يحددها المستخدم على كل عنصر من عناصر المصفوفة.
* الدالة array_reduce()‎: تختزل المصفوفة إلى قيمة واحدة باستخدام دالة يحددها المستخدم.
* الدالة <code>[[PHP/array_reduce|array_reduce()‎]]</code>: تختزل المصفوفة إلى قيمة واحدة باستخدام دالة يحددها المستخدم.
* الدالة array_walk()‎: تطبِّق الدالة على كل عنصر من المصفوفة.
* الدالة <code>[[PHP/array_walk|array_walk()‎]]</code>: تطبِّق الدالة على كل عنصر من المصفوفة.
* معلومات عن نوع الدالة callback.
* معلومات عن [[PHP/callable|نوع الدالة callback]].


== مصادر ==
== مصادر ==
* [http://php.net/manual/en/function.array-map.php صفحة الدالة array_map في توثيق PHP الرسمي.]
* [http://php.net/manual/en/function.array-map.php صفحة الدالة array_map في توثيق PHP الرسمي.]
[[تصنيف:PHP]]
[[تصنيف:PHP Function]]
[[تصنيف:PHP Array]]

المراجعة الحالية بتاريخ 03:49، 4 أبريل 2018

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

تنفذ الدالة array_map()‎ دالةً أخرى يحددها المستخدم على كل عنصر موجود في المصفوفات المُمرََرَة.

الوصف

array array_map ( callable $callback , array $array1 [, array $... ] )

تعيد الدالة كل عناصر المصفوفة array1 بعد تنفيذ الدالة callback على كل عنصر من عناصرها. يجب أن يساوي عدد المعاملات التي تقبلها الدالة callback عدد المصفوفات المُمَرََرَة إلى الدالة array_map()‎.

المعاملات

callback

mixed callback (mixed $parameter1 [, mixed $...])

دالة يحددها المستخدم لتنفيذها على كل عنصر بالمصفوفة.

array1

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

قائمة متغيرة من المصفوفات المُمرََرَة إلى الدالة.

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

تعيد الدالة مصفوفةً تحتوي على كل عناصر المصفوفة array1 بعد تنفيذ الدالة callback على كلٍ منها.

أمثلة

المثال 1: مثال بسيط عن استخدام الدالة array_map()‎

<?php
function cube($n)
{
    return($n * $n * $n);
}

$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>

هذا يجعل قيمة المتغير ‎$b:

Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

المثال 2: استخدام الدوال المجهولة (بدءًا من PHP 5.3.0)

<?php
$func = function($value) {
    return $value * 2;
};

print_r(array_map($func, range(1, 5)));
?>

ناتج المثال السابق:

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)

المثال 3: استخدام أكثر من مصفوفة

<?php
function show_Spanish($n, $m)
{
    return("The number $n is called $m in Spanish");
}

function map_Spanish($n, $m)
{
    return(array($n => $m));
}

$a = array(1, 2, 3, 4, 5);
$b = array("uno", "dos", "tres", "cuatro", "cinco");

$c = array_map("show_Spanish", $a, $b);
print_r($c);

$d = array_map("map_Spanish", $a , $b);
print_r($d);
?>

نتيجة المثال السابق:

// printout of $c
Array
(
    [0] => The number 1 is called uno in Spanish
    [1] => The number 2 is called dos in Spanish
    [2] => The number 3 is called tres in Spanish
    [3] => The number 4 is called cuatro in Spanish
    [4] => The number 5 is called cinco in Spanish
)

// printout of $d
Array
(
    [0] => Array
        (
            [1] => uno
        )

    [1] => Array
        (
            [2] => dos
        )

    [2] => Array
        (
            [3] => tres
        )

    [3] => Array
        (
            [4] => cuatro
        )

    [4] => Array
        (
            [5] => cinco
        )

)

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

توفر هذه الخاصية ميزة إنشاء مصفوفة من المصفوفات عن طريق تمرير NULL كقيمة للمعامل callback.

المثال 4: إنشاء مصفوفة من المصفوفات

<?php
$a = array(1, 2, 3, 4, 5);
$b = array("one", "two", "three", "four", "five");
$c = array("uno", "dos", "tres", "cuatro", "cinco");

$d = array_map(null, $a, $b, $c);
print_r($d);
?>

نتيجة المثال السابق:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => one
            [2] => uno
        )

    [1] => Array
        (
            [0] => 2
            [1] => two
            [2] => dos
        )

    [2] => Array
        (
            [0] => 3
            [1] => three
            [2] => tres
        )

    [3] => Array
        (
            [0] => 4
            [1] => four
            [2] => cuatro
        )

    [4] => Array
        (
            [0] => 5
            [1] => five
            [2] => cinco
        )

)

تحافظ المصفوفة المعادة على المفاتيح المرتبطة بالقيم إذا وفقط إذا كان عدد المصفوفات الممررة إلى الدالة مساويًا للواحد. فيما عدا ذلك، المصفوفة المعادة ستحتوي على متوالية من الأعداد الصحيحة كمفاتيح.

المثال 5: استخدام مفاتيح نصية:

<?php
$arr = array("stringkey" => "value");
function cb1($a) {
    return array ($a);
}
function cb2($a, $b) {
    return array ($a, $b);
}
var_dump(array_map("cb1", $arr));
var_dump(array_map("cb2", $arr, $arr));
var_dump(array_map(null,  $arr));
var_dump(array_map(null, $arr, $arr));
?>

نتيجة المثال السابق:

array(1) {
  ["stringkey"]=>
  array(1) {
    [0]=>
    string(5) "value"
  }
}
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "value"
    [1]=>
    string(5) "value"
  }
}
array(1) {
  ["stringkey"]=>
  string(5) "value"
}
array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "value"
    [1]=>
    string(5) "value"
  }
}

انظر أيضًا

  • الدالة array_filter()‎: ترشِّح عناصر المصفوفة باستخدام دالة يحددها المستخدم.
  • الدالة array_map()‎: تنفِّذ الدالة التي يحددها المستخدم على كل عنصر من عناصر المصفوفة.
  • الدالة array_reduce()‎: تختزل المصفوفة إلى قيمة واحدة باستخدام دالة يحددها المستخدم.
  • الدالة array_walk()‎: تطبِّق الدالة على كل عنصر من المصفوفة.
  • معلومات عن نوع الدالة callback.

مصادر