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

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

 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
สร้างปุ่ม Social Share เพื่อแชร์คอนเทนต์ไปยังโซเชี่ยลมีเดียด้วย Content Msocial
โดย prmindphp พ 22 เม.ย. 2020 6:50 pm บอร์ด MindPHP News & Feedback
0
91
พ 22 เม.ย. 2020 6:50 pm โดย prmindphp
เราสามารถตั้ง Set PRIMARY KEY ว่าจะให้เริ่มต้นที่เลขอะไร ได้มั้ย
โดย thatsawan พ 22 เม.ย. 2020 6:07 pm บอร์ด SQL - Database
3
325
พ 22 เม.ย. 2020 7:20 pm โดย thatsawan
อยากทราบวิธีการ override ไฟล์ Quote มาใช้งานใน Extension ของ phpbb
โดย Ittichai_chupol พ 22 เม.ย. 2020 5:50 pm บอร์ด Programming - PHP
0
110
พ 22 เม.ย. 2020 5:50 pm โดย Ittichai_chupol
สร้าง Content Marketing เชื่อมกับสินค้าด้วย Content Product Match ของ MooZiiCart
โดย prmindphp อ 21 เม.ย. 2020 6:40 pm บอร์ด MindPHP News & Feedback
0
299
อ 21 เม.ย. 2020 6:40 pm โดย prmindphp
อยากให้แสดงเฉพาะคำที่ค้นหา ต้องเขียน code ยังไงครับ
โดย ajsudkedt อ 21 เม.ย. 2020 12:18 pm บอร์ด Programming - PHP
7
276
อ 21 เม.ย. 2020 2:21 pm โดย ajsudkedt
อยากทราบวิธีการแก้ไขปัญหาเรื่องการเรียกใช้งานการแจ้งเตือน ใน Extension ของ phpbb
โดย Ittichai_chupol อ 21 เม.ย. 2020 10:25 am บอร์ด Programming - PHP
1
304
อ 21 เม.ย. 2020 10:56 am โดย thatsawan
(Close)B - ล็อกอินเเล้ว เข้าไปเมนู หาคน จะเจอ error
โดย thatsawan จ 20 เม.ย. 2020 2:47 pm บอร์ด Odoojob.com - Tester
2
8
พฤ 21 พฤษภาคม 2020 5:23 pm โดย thatsawan
B - หน้า admin ส่วน Jobs List เพิ่มข้อมูลเเล้ว ตอนบันทึกขึ้น Warning Field required: About Us เเล้วข้อมูลที่กรอกก็หายไป
โดย thatsawan จ 20 เม.ย. 2020 2:38 pm บอร์ด Odoojob.com - Tester
0
2
จ 20 เม.ย. 2020 2:38 pm โดย thatsawan
การจำลองเซิร์ฟเวอร์ เขียน php ใน Windows 10 โดยใช้ IIS (Internet Information Service)
โดย tsukasaz จ 20 เม.ย. 2020 2:38 pm บอร์ด Share Knowledge
0
297
จ 20 เม.ย. 2020 2:38 pm โดย tsukasaz
flask: AttributeError: 'NoneType' object has no attribute 'medlist'
โดย penrudee อ 19 เม.ย. 2020 9:28 am บอร์ด Programming - C/C++ & java & Python
6
155
อ 21 เม.ย. 2020 8:59 am โดย penrudee
ทำไมถึงเกิด AttributeError: 'NonType' object has no attribute 'medlist'
โดย penrudee อ 19 เม.ย. 2020 8:02 am บอร์ด Programming - C/C++ & java & Python
1
344
อ 19 เม.ย. 2020 1:23 pm โดย mindphp
B - เข้าระบบด้วยข้อมูลจากเมลที่ได้ตอนสมัครงาน สามารถจัดการข้อมูลส่วนนายจ้างได้
โดย thatsawan ส 18 เม.ย. 2020 3:21 pm บอร์ด Odoojob.com - Tester
1
5
ศ 08 พฤษภาคม 2020 3:45 pm โดย thatsawan
B - ได้รับอีเมลให้ login คลิกตามลิงค์เเล้วหาที่ เข้าระบบไม่เจอ มันวิ่งกลับมา index
โดย thatsawan ส 18 เม.ย. 2020 3:14 pm บอร์ด Odoojob.com - Tester
1
9
ศ 08 พฤษภาคม 2020 3:44 pm โดย thatsawan
(Close)B - Template มี เมนูเกินมา
โดย thatsawan ส 18 เม.ย. 2020 3:05 pm บอร์ด Odoojob.com - Tester
1
6
ศ 15 พฤษภาคม 2020 6:34 pm โดย thatsawan
ประกันสังคมจ่ายเงินได้ ในกรณีว่างงานเนื่องจากเหตุสุดวิสัยที่เกิดจาก COVID-19 (มีผลใช้บังคับทางกฎหมายแล้ว)
โดย thatsawan ส 18 เม.ย. 2020 11:36 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
93
ส 18 เม.ย. 2020 11:36 am โดย thatsawan
20 อันดับรายชื่อ เศรษฐีไทยร่ำรวยที่สุดในประเทศไทย
โดย thatsawan ศ 17 เม.ย. 2020 8:22 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
192
ศ 17 เม.ย. 2020 8:22 pm โดย thatsawan
B - แทรก css เป็นแบบ internal ไว้
โดย tsukasaz ศ 17 เม.ย. 2020 6:43 pm บอร์ด Odoojob.com - Tester
0
3
ศ 17 เม.ย. 2020 6:43 pm โดย tsukasaz
B - คลิกเมนู คู่มือการใช้งาน แล้ว error
โดย tsukasaz ศ 17 เม.ย. 2020 5:18 pm บอร์ด Odoojob.com - Tester
1
3
ศ 17 เม.ย. 2020 7:53 pm โดย tsukasaz
B - เมนู components หลักหายไปหลายตัว ใน admin
โดย tsukasaz ศ 17 เม.ย. 2020 2:40 pm บอร์ด Odoojob.com - Tester
0
2
ศ 17 เม.ย. 2020 2:40 pm โดย tsukasaz
B - กดเพิ่มเมนูใหม่แล้ว Error
โดย tsukasaz ศ 17 เม.ย. 2020 2:35 pm บอร์ด Odoojob.com - Tester
1
4
ศ 17 เม.ย. 2020 7:53 pm โดย tsukasaz