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

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
auto post ใน webboard
โดย Anonymous อ 29 มิ.ย. 2010 1:49 am บอร์ด สอบถามปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
0
1739
อ 29 มิ.ย. 2010 1:49 am โดย บุคคลทั่วไป View Topic auto post ใน webboard
ถาม code การแสดงข้อมูลครับ php
โดย Anonymous จ 28 มิ.ย. 2010 1:06 pm บอร์ด Programming - PHP
3
1431
จ 28 มิ.ย. 2010 3:38 pm โดย mindphp View Topic ถาม code การแสดงข้อมูลครับ  php
ต้องการค้นหาค่าใน text file แล้วแสดงผลออกมาครับ
โดย Anonymous อ 27 มิ.ย. 2010 11:18 am บอร์ด Programming - PHP
5
2659
จ 28 มิ.ย. 2010 3:15 pm โดย บุคคลทั่วไป View Topic ต้องการค้นหาค่าใน text file แล้วแสดงผลออกมาครับ
ภาษาไทยสำหรับ บอร์ด SMF 1.1 และ SMF 2.0
โดย mindphp อ 27 มิ.ย. 2010 1:45 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
2078
อ 27 มิ.ย. 2010 1:45 am โดย mindphp View Topic ภาษาไทยสำหรับ บอร์ด SMF 1.1 และ SMF 2.0
ปัญหาการส่งค่า session ใน ajax
โดย Anonymous ส 26 มิ.ย. 2010 9:08 am บอร์ด Programming - PHP
6
4511
อ 09 ส.ค. 2022 1:43 am โดย บุคคลทั่วไป View Topic ปัญหาการส่งค่า session ใน ajax
กูรู SQL ช่วยทีครับ(query case ซับซ้อน)
โดย jinky153 ส 26 มิ.ย. 2010 1:26 pm บอร์ด SQL - Database
8
4845
อ 21 พ.ย. 2010 9:15 pm โดย nungs View Topic กูรู SQL ช่วยทีครับ(query case ซับซ้อน)
คำสั่ง sql ต้องเขียนอย่างไรค่ะ
โดย saiphon ส 26 มิ.ย. 2010 1:15 am บอร์ด SQL - Database
5
2980
พ 10 พ.ย. 2010 11:40 pm โดย genocideaon View Topic คำสั่ง sql ต้องเขียนอย่างไรค่ะ
ช่วยหาวิธีสร้างเว็บไชต์ ขายของที่ง่ายๆค่ะ
โดย Anonymous พ 23 มิ.ย. 2010 11:43 pm บอร์ด Programming - PHP
3
1868
อ 29 มิ.ย. 2010 9:55 am โดย บุคคลทั่วไป View Topic ช่วยหาวิธีสร้างเว็บไชต์ ขายของที่ง่ายๆค่ะ