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

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

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
B - ไม่ใช่แค่โชว์ icon facebook มันต้องทำลิงค์เพื่อให้คลิกไป
โดย mindphp ศ 29 พฤษภาคม 2020 4:39 am บอร์ด FDD (Main)
1
2
ศ 29 พฤษภาคม 2020 4:51 am โดย mindphp
อัพเดท phpbb 3.3 เเล้ว extenstion ใช้งานไม่ได้
โดย thatsawan พฤ 28 พฤษภาคม 2020 10:08 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
4431
พฤ 28 พฤษภาคม 2020 10:10 pm โดย thatsawan
วิธีการสร้าง css ที่ใช้งานเฉพาะในบราวเซอร์ safari เท่านั้น
โดย Ittichai_chupol พฤ 28 พฤษภาคม 2020 6:06 pm บอร์ด CSS Knowledge
0
160
พฤ 28 พฤษภาคม 2020 6:06 pm โดย Ittichai_chupol
อยากทราบวิธีการกำหนด ค่า css ให้กับ button โดยกำหนดเฉพาะแต่ละบราวเซอร์
โดย Ittichai_chupol พ 27 พฤษภาคม 2020 8:39 pm บอร์ด HTML CSS
1
90
พ 27 พฤษภาคม 2020 9:15 pm โดย mindphp
อัพเดท Changelog flask framework ของภาษา Python (ver 1.1.2 ล่าสุด)
โดย jirawoot พ 27 พฤษภาคม 2020 12:19 pm บอร์ด Python Knowledge
0
154
พ 27 พฤษภาคม 2020 12:19 pm โดย jirawoot
งานประจำวันที่ 27 พฤษภาคม 2563
โดย yositacha26 พ 27 พฤษภาคม 2020 12:13 pm บอร์ด MP011 - โยษิตา จันทะวงษ์
1
25
พ 27 พฤษภาคม 2020 12:15 pm โดย yositacha26
อยากทราบว่า วิธีการกำหนดการตั้งค่า ภาษาไทย ใน Netbeans
โดย Ittichai_chupol พ 27 พฤษภาคม 2020 10:13 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
154
พ 27 พฤษภาคม 2020 10:13 am โดย Ittichai_chupol
อยากทราบวิธีการแก้ไข ภาษาไทยกลายอักษรแปลกๆ
โดย Ittichai_chupol จ 25 พฤษภาคม 2020 4:35 pm บอร์ด Programming - PHP
2
187
จ 01 มิ.ย. 2020 6:33 am โดย mindphp
อยากทราบวิธีการ แบบคอลัมเป็น 3 คอลีม โดยใช้ tag <dl>
โดย Ittichai_chupol จ 25 พฤษภาคม 2020 11:56 am บอร์ด HTML CSS
2
188
จ 01 มิ.ย. 2020 4:14 pm โดย LEG
10 สุดยอดสตรีทฟู้ดในแอฟริกาตะวันตก
โดย Anonymous อ 24 พฤษภาคม 2020 9:58 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
178
จ 25 พฤษภาคม 2020 8:03 pm โดย ขุนพล ตั้นตระกูล
อัพเดด Template เว็บไซต์ FDD (V2)
โดย mindphp อ 24 พฤษภาคม 2020 3:51 am บอร์ด FDD (Main)
0
1
อ 24 พฤษภาคม 2020 3:51 am โดย mindphp
R - ปรับกราฟฟิก ของเว็บ FDD
โดย mindphp อ 24 พฤษภาคม 2020 3:50 am บอร์ด FDD (Main)
0
2
อ 24 พฤษภาคม 2020 3:50 am โดย mindphp
ความคืบหน้า / Progress
โดย mindphp อ 24 พฤษภาคม 2020 3:46 am บอร์ด FDD (Main)
1
6
อ 26 พฤษภาคม 2020 8:18 am โดย mindphp
VDO - SP Page builder
โดย numtan5839 ศ 22 พฤษภาคม 2020 6:27 pm บอร์ด SP Page Builder Thai Edition - Manual & VDO & เทคนิคการใช้งาน
1
7
ศ 22 พฤษภาคม 2020 7:00 pm โดย mindphp
วิธีการใช้ Google Tasks แอพจัดการบันทึกสิ่งที่ต้องทำ
โดย sirirat ศ 22 พฤษภาคม 2020 11:04 am บอร์ด Share Knowledge
0
103
ศ 22 พฤษภาคม 2020 11:04 am โดย sirirat
งานประจำวันที่ 22 พฤษภาคม 2563
โดย sirirat ศ 22 พฤษภาคม 2020 10:10 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
1
23
ศ 22 พฤษภาคม 2020 11:22 am โดย numtan5839
สรุปการเรียนรู้ประจำวัน 21/05/63
โดย sirirat ศ 22 พฤษภาคม 2020 10:08 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
0
4
ศ 22 พฤษภาคม 2020 10:08 am โดย sirirat
รายงานความคืบหน้า / Process
โดย mindphp ศ 22 พฤษภาคม 2020 1:07 am บอร์ด SP Page Builder Thai Edition (Main)
1
3
ศ 22 พฤษภาคม 2020 1:34 am โดย mindphp
ส่ง site map ให้ google แต่ไม่โชว์ในเมนูบนเว็บเรา จะมีผลอะไรกับเว็บไหมครับ
โดย toonytoony2004 พฤ 21 พฤษภาคม 2020 10:17 pm บอร์ด Joomla Development
7
190
พ 03 มิ.ย. 2020 10:00 am โดย Sirayu
R - [email Formart-หาคน] เเจ้งเมื่อมีคนสมัครงานใน Odoojob
โดย thatsawan พฤ 21 พฤษภาคม 2020 5:12 pm บอร์ด Odoojob.com - Manual & Content
0
1
พฤ 21 พฤษภาคม 2020 5:12 pm โดย thatsawan