array_filter()
(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()
: تُطبِّق دالةً على كل عنصر من المصفوفة.