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

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

 

Administrator
, ฟังก์ชัน array_walk() : กำหนดฟังก์ชันเพื่อเรียกใช้งานแต่ละ element ใน array - by คู่มือ การใช้ฟังก์ชั่น php สอนใช้งงานฟังก์ชั่นพื้นฐาน,
0 1 0 5
กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ขั้นตอนและการเตรียมตัว การสรรหา ว่าจ้าง พนักงานพิการเข้าทำงาน
โดย fighthrmd125 พฤ 25 ก.พ. 2021 3:02 pm บอร์ด Share Knowledge
0
15
พฤ 25 ก.พ. 2021 3:02 pm โดย fighthrmd125
ทำ google structured ถ้าจะเอาค่า name publisher ได้จากไหนค่ะ
โดย eange08 พฤ 25 ก.พ. 2021 1:19 pm บอร์ด Joomla Development
2
22
พฤ 25 ก.พ. 2021 2:56 pm โดย eange08
หลักการเตรียมตัวก่อนเข้าสัมภาษณ์งาน กับบริษัททางด้านไอที
โดย fighthrmd125 พ 24 ก.พ. 2021 5:21 pm บอร์ด Share Knowledge
0
35
พ 24 ก.พ. 2021 5:21 pm โดย fighthrmd125
ช่วยแนะนำรูปแบบการเขียน Google Structured ของ joomla
โดย eange08 พ 24 ก.พ. 2021 5:02 pm บอร์ด Joomla Development
1
44
พ 24 ก.พ. 2021 6:27 pm โดย mindphp
หลักการเขียนเรียงความ ภาษาไทย
โดย fighthrmd125 พ 24 ก.พ. 2021 2:52 pm บอร์ด Share Knowledge
0
26
พ 24 ก.พ. 2021 2:52 pm โดย fighthrmd125
หลักการคิด เงินเดือน และ หักประกันสังคม พร้อมตัวอย่างการคำนวณ โดยใช้ Google Sheet
โดย fighthrmd125 อ 23 ก.พ. 2021 5:26 pm บอร์ด Share Knowledge
0
40
อ 23 ก.พ. 2021 5:26 pm โดย fighthrmd125
อยากแสดงตัวเลข process ในวงกลมจะต้องทำยังงัย
โดย eange08 อ 23 ก.พ. 2021 5:16 pm บอร์ด JavaScript & Jquery Ajax
0
27
อ 23 ก.พ. 2021 5:16 pm โดย eange08
สอบถามเกี่ยวกับระบบ ERP ว่าถ้าจัดส่งสินค้าเสร็จแล้วต้องลงระบบอย่างไร
โดย Kannaphat อ 23 ก.พ. 2021 3:45 pm บอร์ด MindPHP News & Feedback
0
45
อ 23 ก.พ. 2021 3:45 pm โดย Kannaphat