الفرق بين المراجعتين لصفحة: «PHP/array filter»
Ibrahem-atef (نقاش | مساهمات) إنشاء صفحة جديدة |
ط نقل عبد اللطيف ايمش صفحة PHP/Function/array-filter إلى PHP/array filter: إعادة هيكلة التوثيق |
||
(4 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة) | |||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:<code>array_filter()</code>}}</noinclude> | |||
(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 القيمة | </syntaxhighlight>تمر الدالة <code>array_filter()</code> على كل عنصر من المصفوفة <code>array</code> وتمرِّره كوسيط إلى الدالة <code>callback</code>. إذا أعادت الدالة <code>callback</code> القيمة <code>true</code>، فسيدخل العنصر الحالي من المصفوفة <code>array</code> إلى مصفوفة النتائج. تحافظ الدالة على المفاتيح المرتبطة بالقيم. | ||
== المعاملات == | == المعاملات == | ||
=== <code>array</code> === | |||
المصفوفة التي ستعمل عليها الدالة. | المصفوفة التي ستعمل عليها الدالة. | ||
callback | === <code>callback</code> === | ||
الدالة التي يحددها المستخدم لترشيح عناصر المصفوفة. | الدالة التي يحددها المستخدم لترشيح عناصر المصفوفة. | ||
إذا لم تُمرر أي دالة، فستُمحى كل عناصر المصفوفة المساوية للقيمة false. | إذا لم تُمرر أي دالة، فستُمحى كل عناصر المصفوفة المساوية للقيمة <code>false</code>. | ||
تحدد المعاملات التي ستُمرر إلى الدالة 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 | |||
[c] => 3 | |||
[e] => 5 | |||
) | ) | ||
Even: | Even: | ||
Array | Array | ||
( | ( | ||
[0] => 6 | |||
[2] => 8 | |||
[4] => 10 | |||
[6] => 12 | |||
) | |||
</syntaxhighlight> | |||
المثال 2: استخدام الدالة <code>array_filter()</code> بدون استخدام دالة <code>callback</code><syntaxhighlight lang="php"> | |||
<?php | <?php | ||
$entry = array( | $entry = array( | ||
0 => 'foo', | |||
1 => false, | |||
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 | |||
) | |||
</syntaxhighlight> | |||
) | المثال 3: استخدام الدالة <code>array_filter()</code> مع المعامل <code>flag</code><syntaxhighlight lang="php"> | ||
</syntaxhighlight> | |||
<?php | <?php | ||
سطر 149: | سطر 116: | ||
var_dump(array_filter($arr, function($k) { | var_dump(array_filter($arr, function($k) { | ||
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; | |||
}, ARRAY_FILTER_USE_BOTH)); | }, ARRAY_FILTER_USE_BOTH)); | ||
?> | |||
</syntaxhighlight> | </syntaxhighlight> | ||
نتيجة المثال السابق:<syntaxhighlight lang="php"> | نتيجة المثال السابق:<syntaxhighlight lang="php"> | ||
array(1) { | array(1) { | ||
["b"]=> | |||
int(2) | |||
} | } | ||
array(2) { | array(2) { | ||
["b"]=> | |||
int(2) | |||
["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()
: تُطبِّق دالةً على كل عنصر من المصفوفة.