array_filter()
ใน php ยังมีฟังก์ชันมากมายให้เราได้ศึกษากันและนำไปใช้กับงานของเรา ฟังก์ชันที่เกี่ยวข้องกับการกรอง filter มีหลากหลาย เช่น stream_filter_register() และ imagefilter() ในบทความนี้เราจะมาเรียนรู้เรื่องฟังก์ชัน array_filter น่ะครับ ฟังก์ชันนี้อาจจะมีฟังก์ชันอื่นมาเกี่ยวข้องทำงานร่วมกัน เพื่อกำหนด ฟังก์ชัน callback ให้มันสามารถทำงานได้
array_filter - กรององค์ประกอบ (Elements )ของอาร์เรย์โดยใช้ฟังก์ชั่น callback ในการวนซ้ำ(Iterates) ทุกๆค่าใน Array จะส่งไปยังฟังก์ชัน callback
หากฟังก์ชัน callback
ส่งคืนค่าเป็นจริง(true) ค่าปัจจุบันใน array
ก็จะถูกส่งกลับไปยังผลลัพธ์อาร์เรย์ และคีย์ของอาร์เรย์จะถูกเก็บรักษาไว้
รูปแบบ Syntex
array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array
ตัวอย่างโค้ดการใช้งาน
<?php
function odd($var)
{
// returns whether the input integer is odd
return($var & 1);
}
function even($var)
{
// returns whether the input integer is even
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
)
จากผลลัพธ์ จะเห็นได้ว่า ฟังก์ชัน นี้ จะทำการกรองตาม callback ที่เรากำหนดไว้ ในที่นี้จะทำกรองหา element ใน array ว่าตัวไหนคือ odd (เลขคี่) และ Even(เลขคู่)น่ะครับ เมื่อทำการกรองเสร็จแล้ว ก็จะส่งค่าที่กรองได้คืนมาและทำการเป็นในลำดับต่อไป ในส่วนของฟังก์ชัน callback เราสามารถกำหนดฟังก์ชันอะไรก็ได้ที่เราต้องการจะกรอง หวังว่าบทความนี้จะเป็นประโยชน์และสามารถนำไปประยุกต์ได้น่ะครับ