ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

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

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
อยากทราบวิธีการ แปลง ไฟล์ html มาเป็น pdf
โดย Ittichai_chupol จ 18 พฤษภาคม 2020 12:26 pm บอร์ด Programming - PHP
2
46
พ 20 พฤษภาคม 2020 1:39 pm โดย Ittichai_chupol
งานประจำวันที่ 18 พฤษภาคม 2563
โดย sirirat จ 18 พฤษภาคม 2020 10:50 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
3
38
จ 18 พฤษภาคม 2020 6:43 pm โดย sirirat
list ความรู้ที่มี ว่าเคยเรียน หรือ เคยทำอะไรมาบ้าง
โดย sirirat จ 18 พฤษภาคม 2020 10:48 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
3
34
จ 18 พฤษภาคม 2020 11:03 am โดย sirirat
NOTE
โดย sirirat จ 18 พฤษภาคม 2020 10:47 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
0
3
จ 18 พฤษภาคม 2020 10:47 am โดย sirirat
Work's on Hand ศิริรัตน์ ทิพย์น้อย M102
โดย sirirat จ 18 พฤษภาคม 2020 10:46 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
0
7
จ 18 พฤษภาคม 2020 10:46 am โดย sirirat
เปิดให้ลงทะเบียนร้านค้าแล้วที่ www.ไทยชนะ.com พร้อมรับ New Normal ควมคุมโรคระบาดโควิด 19
โดย thatsawan ส 16 พฤษภาคม 2020 6:01 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
99
ส 16 พฤษภาคม 2020 6:01 pm โดย thatsawan
B - เข้าสู่ระบบเอง เเละออกจากหน้าเว็บไม่ได้
โดย thatsawan ศ 15 พฤษภาคม 2020 7:00 pm บอร์ด Odoojob.com - Tester
1
5
ศ 15 พฤษภาคม 2020 8:03 pm โดย thatsawan
SSL หมดอายุ Enginx โชว์ข้อความ This is a placeholder for the subdomain โดเมน.com ที่มีปัญหา
โดย mindphp พฤ 14 พฤษภาคม 2020 5:58 pm บอร์ด Linux - Web Server
0
144
พฤ 14 พฤษภาคม 2020 5:58 pm โดย mindphp
ตัวช่วยในการคำนวณภาษีรถยนต์
โดย prmindphp พ 13 พฤษภาคม 2020 7:05 pm บอร์ด MindPHP News & Feedback
0
91
พ 13 พฤษภาคม 2020 7:05 pm โดย prmindphp
อยากทราบวิธีการ Export จาก html มาเป็น Excel โดยใช้ php
โดย Ittichai_chupol พ 13 พฤษภาคม 2020 6:26 pm บอร์ด Programming - PHP
2
68
พ 13 พฤษภาคม 2020 7:36 pm โดย Ittichai_chupol
สอบถามวิธีการทำให้หน้าเว็บปรับขนาดตามจอค่ะ
โดย Anonymous อ 12 พฤษภาคม 2020 11:35 pm บอร์ด HTML CSS
4
173
พ 13 พฤษภาคม 2020 8:52 pm โดย บุคคลทั่วไป
ตั้งค่าความกว้างของรูป 100% ในส่วนเสริม Latest News Enhanced ยังไงครับ
โดย toonytoony2004 จ 11 พฤษภาคม 2020 8:30 pm บอร์ด Joomla Development
1
244
อ 12 พฤษภาคม 2020 2:38 pm โดย tsukasaz
สอบถามวิธีการคำนวน sum(prices) แบบรายปี
โดย Anonymous อ 10 พฤษภาคม 2020 9:25 am บอร์ด Programming - PHP
2
558
อ 12 พฤษภาคม 2020 8:34 am โดย บุคคลทั่วไป
สอบถามการเพิ่มข้อมูลลงฐานข้อมูลค่ะ php, mysql
โดย Anonymous ศ 08 พฤษภาคม 2020 11:20 pm บอร์ด Programming - PHP
11
4839
อ 10 พฤษภาคม 2020 9:26 am โดย บุคคลทั่วไป
วิธีบันทึกข้อมูลเข้ารหัสmd5
โดย champp ศ 08 พฤษภาคม 2020 5:55 pm บอร์ด PHP Knowledge
0
1003
ศ 08 พฤษภาคม 2020 5:55 pm โดย champp
B - หน้า admin เมนู member ขึ้น Warning: Invalid argument supplied for foreach(
โดย thatsawan ศ 08 พฤษภาคม 2020 3:49 pm บอร์ด Odoojob.com - Tester
0
4
ศ 08 พฤษภาคม 2020 3:49 pm โดย thatsawan
B - Email หน้าเว็บตอนนี้ odoojob@email.com
โดย thatsawan ศ 08 พฤษภาคม 2020 3:43 pm บอร์ด Odoojob.com - Tester
0
2
ศ 08 พฤษภาคม 2020 3:43 pm โดย thatsawan
human error คืออะไร
โดย champp ศ 08 พฤษภาคม 2020 12:43 pm บอร์ด PHP Knowledge
0
50
ศ 08 พฤษภาคม 2020 12:43 pm โดย champp
Input Type สำหรับใช้งาน
โดย champp ศ 08 พฤษภาคม 2020 12:17 pm บอร์ด PHP Knowledge
0
48
ศ 08 พฤษภาคม 2020 12:17 pm โดย champp
วิธีเปลี่ยนภาพไปเรื่อยๆ ด้วย JavaScript
โดย champp ศ 08 พฤษภาคม 2020 12:14 pm บอร์ด PHP Knowledge
0
51
ศ 08 พฤษภาคม 2020 12:14 pm โดย champp