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

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


== (PHP 4 >= 4.0.6, PHP 5, PHP 7) ==
تُرشِّح الدالة <code>array_filter()‎</code> عناصر المصفوفة باستخدام دالة يحددها المستخدم.
تُرشِّح الدالة array_filter()‎ عناصر المصفوفة باستخدام دالة يحددها المستخدم.


== الوصف ==
== الوصف ==
<syntaxhighlight lang="php">
<syntaxhighlight lang="php">
array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
</syntaxhighlight>تمر الدالة array_filter()‎ على كل عنصر من المصفوفة array وتمرِّره كوسيط إلى الدالة callback. إذا أعادت الدالة callback القيمة true، فسيدخل العنصر الحالي من المصفوفة array إلى مصفوفة النتائج. تحافظ الدالة على المفاتيح المرتبطة بالقيم.
</syntaxhighlight>تمر الدالة <code>array_filter()‎</code> على كل عنصر من المصفوفة <code>array</code> وتمرِّره كوسيط إلى الدالة <code>callback</code>. إذا أعادت الدالة <code>callback</code> القيمة <code>true</code>، فسيدخل العنصر الحالي من المصفوفة <code>array</code> إلى مصفوفة النتائج. تحافظ الدالة على المفاتيح المرتبطة بالقيم.


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


=== <code>array</code> ===
المصفوفة التي ستعمل عليها الدالة.
المصفوفة التي ستعمل عليها الدالة.


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


إذا لم تُمرر أي دالة، فستُمحى كل عناصر المصفوفة المساوية للقيمة false.
إذا لم تُمرر أي دالة، فستُمحى كل عناصر المصفوفة المساوية للقيمة <code>false</code>.
 
flag


تحدد المعاملات التي ستُمرر إلى الدالة callback:
=== <code>flag</code> ===
* ARRAY_FILTER_USE_KEY يمرر المفتاح كمعامل وحيد إلى الدلة callback.
تحدد المعاملات التي ستُمرر إلى الدالة <code>callback</code>:
* ARRAY_FILTER_USE_BOTH يمرر كلًا من القيمة والمفتاح إلى الدالة callback كوسائط.
* <code>ARRAY_FILTER_USE_KEY</code> يمرر المفتاح كمعامل وحيد إلى الدلة <code>callback</code>.
* <code>ARRAY_FILTER_USE_BOTH</code> يمرر كلًا من القيمة والمفتاح إلى الدالة <code>callback</code> كوسائط.


== القيم المعادة ==
== القيم المعادة ==
تعيد المصفوفة المصفََاة.
تعيد المصفوفة المرشّحةُ عناصرها.


== سجل التغييرات ==
== سجل التغييرات ==
{| class="wikitable"
{| class="wikitable"
|الإصدار
!الإصدار
|الوصف
!الوصف
|-
|-
|5.6.0
|5.6.0
|إضافة المعامل الاختياري flag والثوابت ARRAY_FILTER_USE_KEY و ARRAY_FILTER_USE_BOTH
|إضافة المعامل الاختياري <code>flag</code> والثوابت <code>ARRAY_FILTER_USE_KEY</code> و <code>ARRAY_FILTER_USE_BOTH</code>
|}
|}


== أمثلة ==
== أمثلة ==
المثال 1: استخدام بسيط للدالة array_filter()‎<syntaxhighlight lang="php">
المثال 1: استخدام بسيط للدالة <code>array_filter()‎</code><syntaxhighlight lang="php">
<?php
<?php
 
function odd($var)
function odd($var)
{
{
   // تُعيد إذا كانت القيمة العددية للمتغير عددًا فرديًا
   // تُعيد إذا كانت القيمة العددية للمتغير عددًا فرديًا
   return($var & 1);
   return($var & 1);
}
}


function even($var)
function even($var)
{
{
   // تُعيد إذا كانت القيمة العددية للمتغير عددًا زوجيًا
   // تُعيد إذا كانت القيمة العددية للمتغير عددًا زوجيًا
   return(!($var & 1));
   return(!($var & 1));
}


));
}
}


$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
$array2 = array(6, 7, 8, 9, 10, 11, 12);


echo "Odd :\n";
echo "Odd :\n";
print_r(array_filter($array1, "odd"));
print_r(array_filter($array1, "odd"));
echo "Even:\n";
echo "Even:\n";
print_r(array_filter($array2, "even"));
print_r(array_filter($array2, "even"));
 
?>  
?>
</syntaxhighlight>
</syntaxhighlight>


نتيجة المثال السابق:<syntaxhighlight lang="php">
نتيجة المثال السابق:<syntaxhighlight lang="php">
Odd :
Odd :
Array
Array
(
(
 
    [a] => 1
   [a] => 1
    [c] => 3
 
    [e] => 5
   [c] => 3
 
   [e] => 5
 
)
)
Even:
Even:
Array
Array
(
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)


   [0] => 6
</syntaxhighlight>
 
   [2] => 8
 
   [4] => 10


   [6] => 12
المثال 2: استخدام الدالة <code>array_filter()‎</code> بدون استخدام دالة <code>callback</code><syntaxhighlight lang="php">


)
</syntaxhighlight>
المثال 2: استخدام الدالة array_filter()‎ بدون استخدام دالة callback:<syntaxhighlight lang="php">
<?php
<?php


$entry = array(
$entry = array(
 
            0 => 'foo',
            0 => 'foo',
            1 => false,
 
            2 => -1,
            1 => false,
            3 => null,
 
            4 => ''
            2 => -1,
          );
 
            3 => null,
 
            4 => ''
 
         );


print_r(array_filter($entry));
print_r(array_filter($entry));
?>


?>
</syntaxhighlight>
</syntaxhighlight>


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


   [0] => foo
</syntaxhighlight>
 
   [2] => -1


)
المثال 3: استخدام الدالة <code>array_filter()</code> مع المعامل <code>flag</code><syntaxhighlight lang="php">
</syntaxhighlight>


المثال 3: استخدام الدالة array_filter()‎ مع المعامل flag:<syntaxhighlight lang="php">
<?php
<?php


سطر 149: سطر 116:


var_dump(array_filter($arr, function($k) {
var_dump(array_filter($arr, function($k) {
 
    return $k == 'b';
   return $k == 'b';
 
}, ARRAY_FILTER_USE_KEY));
}, ARRAY_FILTER_USE_KEY));


var_dump(array_filter($arr, function($v, $k) {
var_dump(array_filter($arr, function($v, $k) {
 
    return $k == 'b' || $v == 4;
   return $k == 'b' || $v == 4;
 
}, ARRAY_FILTER_USE_BOTH));
}, ARRAY_FILTER_USE_BOTH));
?>


?>
</syntaxhighlight>
</syntaxhighlight>


نتيجة المثال السابق:<syntaxhighlight lang="php">
نتيجة المثال السابق:<syntaxhighlight lang="php">
array(1) {
array(1) {
 
  ["b"]=>
 ["b"]=>
  int(2)
 
 int(2)
 
}
}
array(2) {
array(2) {
 
  ["b"]=>
 ["b"]=>
  int(2)
 
  ["d"]=>
 int(2)
  int(4)
 
 ["d"]=>
 
 int(4)
 
}
}
</syntaxhighlight>
</syntaxhighlight>


== ملاحظات ==
== ملاحظات ==
إذا غيرت الدالة callback في قيم المصفوفة، بإضافة العناصر أو حذفها على سبيل المثال، فإن سلوك هذه الدالة سيكون غير محددٍ.
إذا غيرت الدالة <code>callback</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>‎: تُطبِّق دالةً على كل عنصر من المصفوفة.


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

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

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

تُرشِّح الدالة array_filter()‎ عناصر المصفوفة باستخدام دالة يحددها المستخدم.

الوصف

array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )

تمر الدالة array_filter()‎ على كل عنصر من المصفوفة array وتمرِّره كوسيط إلى الدالة callback. إذا أعادت الدالة callback القيمة true، فسيدخل العنصر الحالي من المصفوفة array إلى مصفوفة النتائج. تحافظ الدالة على المفاتيح المرتبطة بالقيم.

المعاملات

array

المصفوفة التي ستعمل عليها الدالة.

callback

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

إذا لم تُمرر أي دالة، فستُمحى كل عناصر المصفوفة المساوية للقيمة false.

flag

تحدد المعاملات التي ستُمرر إلى الدالة callback:

  • ARRAY_FILTER_USE_KEY يمرر المفتاح كمعامل وحيد إلى الدلة callback.
  • ARRAY_FILTER_USE_BOTH يمرر كلًا من القيمة والمفتاح إلى الدالة callback كوسائط.

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

تعيد المصفوفة المرشّحةُ عناصرها.

سجل التغييرات

الإصدار الوصف
5.6.0 إضافة المعامل الاختياري flag والثوابت ARRAY_FILTER_USE_KEY و ARRAY_FILTER_USE_BOTH

أمثلة

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

 <?php
function odd($var)
{
   // تُعيد إذا كانت القيمة العددية للمتغير عددًا فرديًا
   return($var & 1);
}

function even($var)
{
   // تُعيد إذا كانت القيمة العددية للمتغير عددًا زوجيًا
   return(!($var & 1));
}

));
}

$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);

echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
?>

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

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

المثال 2: استخدام الدالة array_filter()‎ بدون استخدام دالة callback

<?php

$entry = array(
             0 => 'foo',
             1 => false,
             2 => -1,
             3 => null,
             4 => ''
          );

print_r(array_filter($entry));
?>

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

Array
(
    [0] => foo
    [2] => -1
)

المثال 3: استخدام الدالة array_filter()‎ مع المعامل flag

<?php

$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];

var_dump(array_filter($arr, function($k) {
    return $k == 'b';
}, ARRAY_FILTER_USE_KEY));

var_dump(array_filter($arr, function($v, $k) {
    return $k == 'b' || $v == 4;
}, ARRAY_FILTER_USE_BOTH));
?>

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

array(1) {
  ["b"]=>
  int(2)
}
array(2) {
  ["b"]=>
  int(2)
  ["d"]=>
  int(4)
}

ملاحظات

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

انظر أيضًا

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

مصادر