array_walk() กำหนดฟังก์ชันเพื่อเรียกใช้งานแต่ละ element ใน array

ใน php ยังมีฟังก์ชันอีกมากมายที่สามารถสร้างความสะดวกให้เราในการเขียนโปรแกรม โดยที่ไม่จำเป็นต้องสร้างฟังก์ชันเอง เราเพียงแค่เรียกใช้ฟังก์ชันที่เขามีมาและนำใช้งานอย่างถูกต้องครับ สำหรับบทความนี้เราจะมาพูดถึงฟังก์ชันหนึ่งซึ่งหน้าสนใจมาก และเกี่ยวข้องกับ Array variable ด้วย ฟังก์ชันนี้มีชื่อว่า array_walk () 

ฟังก์ชั่น array_walk () จะทำงานในแต่ละองค์ประกอบอาร์เรย์ในฟังก์ชั่นที่ผู้ใช้กำหนด ซึ่งคีย์  key ทั้งหมดของ array และค่าของอาร์เรย์จะเป็นพารามิเตอร์ของฟังก์ชัน   ฟังชันก์นี้จะไม่ได้รับผลกระทบจากตัวชี้อาร์เรย์ภายในของอาร์เรย์  ค่าของ array อาจมีการเปลี่ยนแปลงเท่านั้น; โครงสร้างของมันไม่สามารถเปลี่ยนแปลงได้เช่นโปรแกรมเมอร์ไม่สามารถเพิ่มยกเลิกการตั้งค่าหรือจัดลำดับองค์ประกอบใหม่ได้ หากการเรียกกลับไม่เป็นไปตามข้อกำหนดนี้พฤติกรรมของฟังก์ชั่นนี้จะไม่ได้กำหนดและคาดเดาไม่ได้

รูปแบบ syntex 

array_walk ( array &$array , callable $callback [, Mixed $userdata =NULL ]): bool

ตัวอย่างการใช้งานฟังก์ชัน array_walk ()

<?php
function myfunction($value,$key)
{
echo "The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
?>

output ที่จะได้

The key a has the value red
The key b has the value green
The key c has the value blue

จะเห็นได้ว่ามันจะทำงานร่วมกับฟังก์ชันที่สร้างขึ้นเอง  โดยที่นำค่าของอาเรย์มาเป็นพารามิตเตอร์  พารามิเตอร์ตัวแรกคือ array ตัวที่2คือชื่อฟังก์ชัน ซึ่งการเรียกใช้ก็ไม่ยาก เพียงใส่ชื่อฟังก์ชันที่เราสร้างขึ้นไปในฟังก์ชัน array_walk() รวมถึงตัวแปรอาเรย์ครับ,   array_walk() จะเรียกฟังก์ชัน myFunction โดยส่ง ค่าvalueของarray เป็นพารามิเตอร์แรก และค่า keyของarray เป็นพารามิเตอร์ที่ 2 ให้กับฟังก์ชัน myFunction   เรามาดูตัวอย่างต่อไป

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");

function test_alter(&$item1, $key, $prefix)
{
    $item1 = "$prefix: $item1";
}

function test_print($item2, $key)
{
    echo "$key. $item2<br />\n";
}

echo "Before ...:\n";
array_walk($fruits, 'test_print');

array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";

array_walk($fruits, 'test_print');
?>

output

Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple

ผลลัพธ์ในตัวอย่างนี้ ค่อนข้างจะซัพซ้อนบ้างแต่ไม่ยากเกินกว่าจะเข้าใจ เราได้สร้างหรือกำหนดฟังก์ชันขึ้นมาสองฟังก์ชันที่ชื่อว่า test_print() และ test_alter() และสร้างอาเรย์ ชื่อ $fruits ด้วย ซึ้งหากใช้ร่วมกับ array_walk($fruits, 'test_print'); จะผลลัพธ์เพียงแสดงค่าของอาเรย์ที่อยู่ใน $fruits ทั้งหมดมาแสดงทั้ง key และ item และต่อมามีการเรียกใช้ฟังก์ชัน array_walk($fruits, 'test_alter', 'fruit'); ซึ่งฟังก์ชันนี้จะเพิ่มคำว่า fruits คั่นระหว่าง key และ item เมื่อ echo มาในฟังก์ชันเดิม ก็จะแสดงข้อมูลตาม ผลลัพธ์ที่ได้ ที่ .. and after: ครับ เพื่อให้เข้าใจมากขึ้นอาจจะต้องทดลองทำกันดูครับ หวังว่าบทความนี้จะเป็นประโยชน์น่ะครับ

 

ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : ฟังก์ชัน PHP

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
มีเสื้อ Joomla 1.6 ออกมาขายแล้ว Joomla! 1.6 Promotional Shirts Now Available
โดย mindphp ส 15 พฤษภาคม 2010 7:16 pm บอร์ด MindPHP News & Feedback
1
1713
อ 16 พฤษภาคม 2010 11:29 pm โดย imsn View Topic มีเสื้อ Joomla 1.6 ออกมาขายแล้ว Joomla! 1.6 Promotional Shirts Now Available
อยากรู้ว่า dreamweaver เชื่่อมไป smf ได้มั้ยครับ...
โดย Anonymous ส 15 พฤษภาคม 2010 1:54 am บอร์ด HTML CSS
1
2203
ส 15 พฤษภาคม 2010 2:24 am โดย mindphp View Topic อยากรู้ว่า dreamweaver เชื่่อมไป smf ได้มั้ยครับ...
Module M Server Load Joomla สำหรับเช็ค Server Load สำหรับ OS Linux,Unix เท่านั้น
โดย mindphp ส 15 พฤษภาคม 2010 1:31 am บอร์ด MindPHP News & Feedback
1
1478
พฤ 24 มิ.ย. 2010 8:04 am โดย k2003 View Topic Module M Server Load Joomla สำหรับเช็ค Server Load สำหรับ OS Linux,Unix เท่านั้น
Mudule Paypal Donation 1.1.2 for Joomla1.5
โดย mindphp ส 15 พฤษภาคม 2010 1:28 am บอร์ด MindPHP News & Feedback
0
1039
ส 15 พฤษภาคม 2010 1:28 am โดย mindphp View Topic Mudule Paypal Donation 1.1.2 for Joomla1.5
Module Thai Currency Exchange Rate for joomla 1.5
โดย mindphp ส 15 พฤษภาคม 2010 1:27 am บอร์ด MindPHP News & Feedback
0
2507
ส 15 พฤษภาคม 2010 1:27 am โดย mindphp View Topic Module Thai Currency Exchange Rate for joomla 1.5
Module แสดง กระทู้ล่าสุด ของ phpbb3 ใน Joomla 1.5 Recent Topic
โดย mindphp ส 15 พฤษภาคม 2010 1:23 am บอร์ด MindPHP News & Feedback
1
4776
อ 03 เม.ย. 2011 10:29 pm โดย บุคคลทั่วไป View Topic Module แสดง กระทู้ล่าสุด ของ phpbb3 ใน Joomla 1.5 Recent Topic
สอบถามเรื่องการ login ครับ
โดย Anonymous ส 15 พฤษภาคม 2010 12:28 am บอร์ด Programming - PHP
1
924
ส 15 พฤษภาคม 2010 12:36 am โดย mindphp View Topic สอบถามเรื่องการ login ครับ
สงสัยว่า PHP Object เรียก function แบบนี้ได้ไหมครับ
โดย Anonymous ศ 14 พฤษภาคม 2010 11:45 am บอร์ด Programming - PHP
1
1044
ศ 14 พฤษภาคม 2010 1:56 pm โดย mindphp View Topic สงสัยว่า PHP Object เรียก function แบบนี้ได้ไหมครับ