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

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

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
VDO - แนะนำ feature ใหม่ MDFiles
โดย numtan5839 จ 13 เม.ย. 2020 6:52 pm บอร์ด MDFiles - Manual
4
21
พ 15 เม.ย. 2020 2:22 am โดย mindphp
เป็นเกษตรกรรึป่าวตรวจสอบได้ที่นี่
โดย thatsawan จ 13 เม.ย. 2020 12:34 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
159
พ 15 เม.ย. 2020 11:32 am โดย thatsawan
บล็อค สแปมบอท ด้วย cloudflare
โดย mindphp จ 13 เม.ย. 2020 4:08 am บอร์ด Linux - Web Server
0
106
จ 13 เม.ย. 2020 4:08 am โดย mindphp
"กรมการจัดหางาน" ตามหาคนว่างงาน รับช่วยงานกรมแบบ Work from home วันละ 300 บาท 45 วัน
โดย thatsawan ส 11 เม.ย. 2020 4:12 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
104
ส 11 เม.ย. 2020 4:12 pm โดย thatsawan
ปัญหา google "อ๊ะ! มีบางอย่างผิดพลาด หน้านี้ไม่ได้โหลด Google Maps "เกิดจากอะไรค่ะ
โดย thatsawan ส 11 เม.ย. 2020 1:28 pm บอร์ด HTML CSS
1
107
ส 11 เม.ย. 2020 1:32 pm โดย mindphp
อยากทราบวิธี ทำให้ แพนทที่สร้างขึ้นมาสามารถทำงานได้อย่างอัตโนมัติ
โดย Ittichai_chupol ศ 10 เม.ย. 2020 10:22 pm บอร์ด Programming - PHP
5
116
ศ 15 พฤษภาคม 2020 11:56 am โดย Ittichai_chupol
B - ลืมตำแหน่งงาน ที่เคยทำงาน ที่บอร์ดหัวข้อว่าง
โดย thatsawan ศ 10 เม.ย. 2020 6:10 pm บอร์ด Odoojob.com - Tester
1
5
ศ 08 พฤษภาคม 2020 3:31 pm โดย thatsawan
(Close)B - สมัครงานเสร็จยังไม่มี User pass ให้ login มาฝั่ง Odoojob
โดย thatsawan ศ 10 เม.ย. 2020 6:08 pm บอร์ด Odoojob.com - Tester
1
6
อ 14 เม.ย. 2020 6:16 pm โดย thatsawan
ผลลัพท์การคูณ เเต่ละที่ทำไมไม่ตรงกัน
โดย thatsawan พฤ 09 เม.ย. 2020 3:12 pm บอร์ด Programming - C/C++ & java & Python
4
108
พฤ 09 เม.ย. 2020 4:11 pm โดย thatsawan
อยากทราบวิธีการตรวจสอบตัวแปลภาษาใน phpbb ตัวไหนยังไม่มีการแปล
โดย Ittichai_chupol พ 08 เม.ย. 2020 10:57 am บอร์ด Programming - PHP
1
111
พ 08 เม.ย. 2020 12:24 pm โดย thatsawan
ปัญหาการใช้งาน MJUpgrade
โดย Anonymous อ 07 เม.ย. 2020 10:33 am บอร์ด MindPHP News & Feedback
5
118
อ 07 เม.ย. 2020 1:10 pm โดย mindphp
การรันไฟล์ .exe
โดย bumbim01 จ 06 เม.ย. 2020 8:25 pm บอร์ด Programming - C/C++ & java & Python
1
165
อ 14 เม.ย. 2020 8:24 pm โดย mindphp
สรรพากรแจ้งข่าวดี ขยายเวลายื่นแบบฯ ให้ผู้ประกอบการทุกราย สู้ COVID19
โดย thatsawan จ 06 เม.ย. 2020 1:42 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
154
จ 06 เม.ย. 2020 1:42 pm โดย thatsawan
G -ข้อมูลสำหรับ ทำโปรแกรม ความต้องการของระบบที่ต้องทำ รวมเฟส 4
โดย mindphp จ 06 เม.ย. 2020 12:18 pm บอร์ด AZKing (Main)
1
10
จ 06 เม.ย. 2020 12:32 pm โดย mindphp
แนะนำบริการ hosting จาก Hostneverdie
โดย tumsailom อ 05 เม.ย. 2020 7:58 pm บอร์ด Web Hosting Review - Free Host Share Host VPS
0
351
อ 05 เม.ย. 2020 7:58 pm โดย tumsailom
อยากทราบถ้าหากต้องการที่ทดสอบการทำงานของของ Event cron จะต้องทำอย่างไรบางครับ
โดย Ittichai_chupol ส 04 เม.ย. 2020 10:50 am บอร์ด Programming - PHP
1
227
จ 06 เม.ย. 2020 11:39 am โดย mindphp
เทมเพลต Megadeal ของ MooZiiCart สำหรับทำเว็บขายสินค้าออนไลน์
โดย prmindphp ศ 03 เม.ย. 2020 6:39 pm บอร์ด MindPHP News & Feedback
0
259
ศ 03 เม.ย. 2020 6:39 pm โดย prmindphp
เครื่องมือช่วยกรองสินค้า สำหรับค้นหาสินค้าที่ต้องการ
โดย prmindphp พฤ 02 เม.ย. 2020 6:46 pm บอร์ด MindPHP News & Feedback
0
316
พฤ 02 เม.ย. 2020 6:46 pm โดย prmindphp
การเขียน Script สำหรับสร้าง User ใน Joomla
โดย tsukasaz พฤ 02 เม.ย. 2020 3:33 pm บอร์ด Joomla Developing Knowledge
0
368
พฤ 02 เม.ย. 2020 3:33 pm โดย tsukasaz
อยากทราบวิธีการดึงข้อมูลจาก Excel โดยการดึงข้อมูลจาก คอลัมของ Excel มาบันทึกลงในฐานข้อมูล
โดย Ittichai_chupol พฤ 02 เม.ย. 2020 10:09 am บอร์ด Programming - PHP
1
484
พฤ 02 เม.ย. 2020 10:43 am โดย mindphp