ฟังก์ชัน

30 December 2016

ในบทนี้ คุณจะได้เรียนรู้เกี่ยวกับการสร้างและการใช้งานฟังก์ชันในภาษา PHP คุณจะเข้าใจแนวคิดและวิธีการใช้งานของฟังก์ชันซึ่งจะเป็นฟังก์ชันที่สร้างจากผู้ใช้เป็นหลัก

ฟังก์ชันคืออะไร

ฟังก์ชัน (Functions) คือส่วนของโปรแกรมหรือซอสโค้ดที่ใช้สำหรับจัดการกับงานที่เฉพาะเจาะจง ฟังก์ชันเป็นขั้นตอนของการทำงานบางอย่างเพื่อให้ได้ผลลัพธ์ตามที่ต้องการโดยการเรียกใช้ฟังก์ชัน ในภาษา PHP มีฟังก์ชันมาตรฐานที่คุณสามารถใช้งานได้ ซึ่งเรียกว่า Predefined function ซึ่งแน่นอนฟังก์ชันเหล่านี้มีไว้สำหรับจัดการงานทั่วไปเท่านั้น ในบทนี้เราจะพูดเกี่ยวกับฟังก์ชันที่สร้างจากผู้ใช้ (User-defined function)

ฟังก์ชันมีส่วนประกอบสองอย่างคือส่วนหัวของฟังก์ชัน (head) และส่วนการทำงานของฟังก์ชัน (function body) ในภาษา PHP เรากำหนดจำนวนของพารามิเตอร์ของฟังก์ชันที่ส่วนหัว และการทำงานของฟังก์ชันในส่วนการทำงาน ซึ่งฟังก์ชันอาจจะมีการส่งค่ากลับหรือไม่มีก็ได้ (return) นี่เป็นรูปแบบของการประกาศฟังก์ชันในภาษา PHP

function name(parameters) {
    statements
    return value (optional)
}

ในการสร้างฟังก์ชันในภาษา PHP เราใช้คำสั่ง function และตามด้วยชื่อของฟังก์ชันซึ่งมีหลักการตั้งชื่อเหมือนกับตัวแปร parameters เป็นการกำหนดพารามิเตอร์ของฟังก์ชัน ซึ่งอาจจะมีหรือไม่มีก็ได้ ภายในบล็อคการทำงานของฟังก์ชัน {} เป็นขั้นตอนการทำงานของฟังก์ชัน และคำสั่ง return ใช้สำหรับส่งค่ากลับซึ่งเป็นทางเลือก

การสร้างฟังก์ชันในภาษา PHP

การสร้างฟังก์ชันเป็นการรวบรวมกลุ่มคำสั่งของโปรแกรมในการทำงานที่เฉพาะเจาะจง การสร้างฟังก์ชันจะทำให้คุณสามารถเรียกใช้โค้ดเดิม (reuse) โดยที่ไม่ต้องเขียนขึ้นใหม่ มาดูตัวอย่างการสร้างฟังก์ชันในภาษา PHP

function welcome() {
    echo "Welcome to marcuscode.\n";
}

function hello($name) {
    echo "Hello $name!\n";
}

function add_number($a, $b) {
    $sum = $a + $b;
    echo "$a + $b = $sum\n";
}

ในตัวอย่างเป็นการสร้างฟังก์ชันในภาษา PHP ซึ่งเราได้สร้าง 3 ฟังก์ชันสำหรับทำงานที่แตกต่างกันออกไป ฟังก์ชัน welcome() เป็นฟังก์ชันสำหรับแสดงข้อความต้อนรับสำหรับ marcuscode.com

ฟังก์ชัน hello() เป็นฟังก์ชันในการกล่าวคำทักทาย โดยมี $name ที่ส่งเข้ามายังฟังก์ชัน เรียกว่าพารามิเตอร์ของฟังก์ชัน และฟังก์ชัน add_number() เป็นฟังก์ชันสำหรับบวกตัวเลขสองตัวที่ส่งเป็นพารามิเตอร์คือ $a และ $b และแสดงผลรวมออกทางหน้าจอ ทั้ง 3 ฟังก์ชันไม่มีการส่งค่ากลับ

ฟังก์ชันที่มีการส่งค่ากลับ

ในบางครั้งของการเขียนโปรแกรม คุณอาจจะต้องการผลลัพธ์ที่ได้หลังจากทำงานจากฟังก์ชัน คุณสามารถใช้คำสั่ง return เพื่อส่งค่ากลับไปยังจุดที่เรียกใช้ฟังก์ชัน มาดูตัวอย่างการสร้างฟังก์ชันที่มีการส่งค่ากลับในภาษา PHP

function get_site_name() {
    return "marcuscode";
}

function factorial($n) {
    $fac = 1;
    for ($i = 1; $i <= $n; $i++) {
        $fac *= $i;
    }
    return $fac;
}

function get_factor($number) {
    $factor = [];
    for ($i = 1; $i <= $number; $i++) {
        if ($number % $i == 0) {
            array_push($factor, $i);
        }
    }
    return $factor;
}

function square_area($width, $height) {
    return $width * $height;
}

ในตัวอย่างเป็นฟังก์ชันที่มีการส่งค่ากลับในรูปแบบต่างๆ การส่งค่ากลับของฟังก์ชันนั้นจะใช้คำสั่ง return และตามด้วยค่าที่ต้องการส่งกลับ ในฟังก์ชันอาจจะมีการใช้คำสั่ง return ได้หลายที่ ซึ่งเมื่อโปรแกรมพบกับคำสั่งนี้ จะเป็นการจบการทำงานในฟังก์ชันในทันที

function get_site_name() {
    return "marcuscode";
}

function factorial($n) {
    $fac = 1;
    for ($i = 1; $i <= $n; $i++) {
        $fac *= $i;
    }
    return $fac;
}

เราได้สร้าง 4 ฟังก์ชันสำหรับการทำงานที่แตกต่างกัน ฟังก์ชัน get_site_name() เป็นฟังก์ชันสำหรับรับชื่อของเว็บไซต์ที่มีการส่งค่ากลับเป็น String ฟังก์ชันนี้ไม่มีพารามิเตอร์ ฟังก์ชัน factorial() เป็นฟังก์ชันสำหรับหาค่า Factorial ของจำนวนเต็ม N ฟังก์ชันนี้มีพารามิเตอร์ 1 ตัวที่ส่งเข้ามาในฟังก์ชัน

function get_factor($number) {
    $factor = [];
    for ($i = 1; $i <= $number; $i++) {
        if ($number % $i == 0) {
            array_push($factor, $i);
        }
    }
    return $factor;
}

function square_area($width, $height) {
    return $width * $height;
}

ต่อมาเป็นฟังก์ชัน get_factor() สำหรับหาตัวประกอบทั้งหมดของตัวเลขจำนวนเต็ม N โดยฟังก์ชันนี้ส่งค่ากลับเป็นอาเรย์และมีพารามิเตอร์ 1 ตัว สุดท้ายเป็นฟังก์ชัน square_area() สำหรับหาค่าพื้นที่ของสี่เหลียม โดยมีความกว้างและความยาวเป็นพารามิเตอร์ของฟังก์ชัน

คุณจะเห็นว่าการทำงานของฟังก์ชันมีตั้งแต่ง่ายจนถึงซับซ้อน ขึ้นกับว่าคุณสร้างฟังก์ชันนั้นขึ้นมาเพื่ออะไร

การเรียกใช้งานฟังก์ชัน

หลังจากที่เราสร้างฟังก์ชันในตัวอย่างก่อนหน้าแล้ว ต่อไปมาดูการเรียกใช้งานฟังก์ชันในภาษา PHP

<?php

function welcome() {
    echo "Welcome to marcuscode.\n";
}

function hello($name) {
    echo "Hello $name.\n";
}

function add_number($a, $b) {
    $sum = $a + $b;
    echo "$a + $b = $sum\n";
}

welcome();

hello("Marcus");
hello("Jonathan");
hello("Daniel");

add_number(2, 3);
add_number(34, 15);
add_number(1.45, 2.4);

?>

ในตัวอย่าง เป็นการเรียกใช้ฟังก์ชันในภาษา PHP คุณสามารถประกาศฟังก์ชันได้ทุกๆ ที่ในโปรแกรม ในการเรียกใช้ฟังก์ชันนั้นเราใช้ชื่อของฟังก์ชันและตามด้วยค่าที่ต้องส่งเข้าไปในฟังก์ชันพารามิเตอร์ ซึ่งเรียกว่าอากิวเมนต์

welcome();

ในตัวอย่าง เราเรียกใช้ฟังก์ชัน welcome() ซึ่งฟังก์ชันนี้ไม่มีพารามิเตอร์ ดังนั้นในตอนเรียกใช้มันจึงไม่มีอากิวเมนต์

hello("Marcus");
hello("Jonathan");
hello("Daniel");

เราเรียกใช้ฟังก์ชัน hello() ในการเรียกใช้ฟังก์ชันนี้เราจะต้องส่งอากิวเมนต์ เช่น "Marcus" ซึ่งเป็นอากิวเมนต์เพื่อส่งเข้าไปทำงานในฟังก์ชัน ในตอนนี้คุณจะเห็นแล้วว่าเราสามารถเรียกใช้ฟังก์ชันได้หลายครั้ง แต่เราเปลี่ยนค่าของอากิวเมนต์แทน ซึ่งนี่เองเป็นประโยชน์ของฟังก์ชันที่ทำให้เราไม่ต้องเขียนโค้ดเดิมซ้ำๆ

add_number(2, 3);
add_number(34, 15);
add_number(1.45, 2.4);

เรายังเรียกใช้ฟังก์ชันบวกเลข add_number() ที่เราได้สร้างไว้ ฟังก์ชันนี้ต้องการสองอากิวเมนต์ที่เป็นตัวเลขเพื่อทำงาน

Welcome to marcuscode.
Hello Marcus.
Hello Jonathan.
Hello Daniel.
2 + 3 = 5
34 + 15 = 49
1.45 + 2.4 = 3.85

นี่เป็นผลลัพธ์การทำงานของเรียกใช้ฟังก์ชัน

ในตัวอย่างก่อนหน้าเป็นการเรียกใช้งานฟังก์ชันที่ไม่มีการส่งค่ากลับ สำหรับฟังก์ชันที่มีการส่งค่ากลับ เราจำเป็นต้องนำตัวแปรมารับค่าที่จะส่งกลับจากฟังก์ชันเพื่อที่จะนำไปใช้งานต่อไป มาดูตัวอย่างการใช้งานฟังก์ชันที่มีการส่งค่ากลับในภาษา PHP

<?php

function get_pronoun($gender) {
    if ($gender == 0) {
        return "he";
    } else {
        return "she";
    }
}

function celsius_to_fahrenheit($celsius) {
    return $celsius * 1.8 + 32;
}

function get_weather($celsius) {
    $text = "";
    if ($celsius <= 0) {
        $text = "freezing";
    } else if ($celsius <= 10) {
        $text = "very cold";
    } else if ($celsius <= 18) {
        $text = "cold";
    } else if ($celsius <= 28) {
        $text = "warm";
    } else if ($celsius <= 38) {
        $text = "hot";
    } else {
        $text = "extremely hot";
    }
    return $text;
}

function mph_to_kmph($mph) {
    return $mph * 1.60934;
}

$pronoun = get_pronoun(0);
echo "This is Marcus's profile, $pronoun has 3 friends.\n";

echo "It was " . celsius_to_fahrenheit(3) . " degree yesterday, ";
echo "the weather was " . get_weather(3) . ".\n";

echo "It is " . celsius_to_fahrenheit(12) . " degree today, ";
echo "the weather is " . get_weather(12) . ".\n";

echo "It will be " . celsius_to_fahrenheit(22) . " degree tomorrow, ";
echo "the weather would get " . get_weather(22) . "er.\n";

$km = mph_to_kmph(36);
echo "The car is running at 36 mph or $km km/h.\n";

?>

ในตัวอย่างเป็นการเรียกใช้งานฟังก์ชันที่มีการส่งค่ากลับ ค่าที่ส่งกลับมาจากฟังก์ชันนั้นเป็น Literal ดังนั้นเราสามารถใช้มันเหมือนกับตัวแปรหรือ Literal ได้ โดยการนำตัวแปรมารับค่าหรือนำไปใช้งานในทันที

$pronoun = get_pronoun(0);
echo "This is Marcus's profile, $pronoun has 3 friends.\n";

ในตัวอย่างเราเรียกใช้ฟังก์ชัน get_pronoun() สำหรับใช้รับค่าของคำสรรพนามเรียกแทนชื่อ เราให้ความหมายว่า 0 เป็นเพศชาย และนอกเหนือจากนี้จะเป็นเพศหญิง เราใช้ตัวแปร $pronoun ในการรับค่าที่ส่งกลับมาจากฟังก์ชัน

echo "It was " . celsius_to_fahrenheit(3) . " degree yesterday, ";
echo "the weather was " . get_weather(3) . ".\n";

echo "It is " . celsius_to_fahrenheit(12) . " degree today, ";
echo "the weather is " . get_weather(12) . ".\n";

echo "It will be " . celsius_to_fahrenheit(22) . " degree tomorrow, ";
echo "the weather would get " . get_weather(22) . "er.\n";

ในตัวอย่างเป็นการบอกอุณภูมิและสภาพอากาศในแต่ละวัน โดยการแปลงองศาเซลเซียสไปเป็นองศาฟาเรนไฮต์ด้วยฟังก์ชัน celsius_to_fahrenheit() เพื่อนำมาแสดงผล และตรวจสอบสภาพอากาศจากอุณหภูมิด้วยฟังก์ชัน get_weather()

$km = mph_to_kmph(36);
echo "The car is running at 36 mph or $km km/h.\n";

ในฟังก์ชัน mph_to_kmph() เป็นฟังก์ชันในการแปลงความเร็วจากไมล์ต่อชั่วโมงเป็นกิโลเมตรต่อชั่วโมง

This is Marcus's profile, he has 3 friends.
It was 37.4 degree yesterday, the weather was very cold.
It is 53.6 degree today, the weather is cold.
It will be 71.6 degree tomorrow, the weather would get warmer.
The car is running at 36 mph or 57.93624 km/h.

นี่เป็นผลลัพธ์เมื่อรันโปรแกรมในการเรียกใช้งานฟังก์ชัน

ฟังก์ชันกับค่าเริ่มต้นของพารามิเตอร์

โดยปกติแล้วในการส่งค่าอากิวเมนต์เข้ามายังฟังก์ชัน จำนวนของค่าที่ส่งต้องตรงกันกับพารามิเตอร์ของฟังก์ชัน ในภาษา PHP คุณสามารถสร้างพารามิเตอร์กับค่าเริ่มต้นได้ หรือที่เรียกกันว่า Default argument ซึ่งเป็นทางเลือกในการเรียกใช้งานฟังก์ชัน มาดูตัวอย่างของ Default argument ในภาษา PHP

<?php

function introduce($lang = "PHP") {
    echo "I'm a " . $lang . " programmer.\n";
}

function birth_date($month, $day, $year = 0) {
    ini_set('date.timezone', 'America/New_York');
    $month_name = date('F', mktime(0, 0, 0, $month, 10));
    if ($year == 0) {
        echo "I was born in $month_name $day\n";
    } else {
        echo "I was born in $month_name $day, $year\n";
    }
}

introduce("Java");
introduce();

birth_date(11, 5);
birth_date(11, 5, 1988);

?>

ในตัวอย่าง เป็นการใช้งานอากิวเมนต์กับค่าเริ่มต้นในภาษา PHP ในฟังก์ชัน introduce() เรามี $lang = "PHP" เป็นพารามิเตอร์ที่มีการกำหนดค่าเริ่มต้น ดังนั้น นี่เป็นรูปแบบของการเรียกใช้ฟังก์ชันที่เป็นไปได้

introduce("Java");
introduce();

ในคำสั่งแรก เราได้เรียกใช้ฟังก์ชัน introduce() ละส่งค่า "Java" เป็นอากิวเมนต์ทำให้ Default argument ถูกเพิกเฉยๆ ไป ในคำสั่งที่สองเราได้เราได้เรียกใช้ฟังก์ชันโดยที่ไม่ได้ส่งอากิวเมนต์ ดังนั้น Default argument ที่มีค่าเท่ากับ "PHP" จึงถูกใช้งาน

birth_date(11, 5);
birth_date(11, 5, 1988);

ต่อมาเป็นฟังก์ชัน birth_date() ซึ่งมี Default argument คือ $year = 0 ในการเข้าไปยังฟังก์ชัน ค่าที่ไม่ใช่ Default จะต้องถูกส่งทั้งหมด และค่าที่เป็น Default นั้นจะเป็นทางเลือก ในตัวอย่างเราสามารถเลือกที่จะส่งปีเกิดหรือไม่ก็ได้

I'm a Java programmer.
I'm a PHP programmer.
I was born in November 5
I was born in November 5, 1988

นี่เป็นผลลัพธ์ในการทำงานของโปรแกรม

ในการประกาศ Default argument นั้น สามารถมีได้ตั้งแต่ 1 หรือหลายอากิวเมนต์ ในการส่งค่าเข้าไปยังฟังก์ชัน จำนวนอากิวเมนต์ที่ส่งเข้าไปนั้นต้องมากกว่าหรือเท่ากับจำนวนอากิวเมนต์ที่ไม่ใช้ Default และไม่เกินจำนวนอากิวเมนต์ทั้งหมด

Passing by reference (การส่งค่าแบบอ้างอิง)

ในการส่งค่าเข้าไปยังฟังก์ชัน โดยปกติแล้วภาษา PHP จะทำการคัดลอกค่านั้นไปใส่ในตัวแปรใหม่ เราเรียกการส่งค่าแบบนี้ว่า Pass by value ในภาษา PHP คุณสามารถส่งค่าได้โดยการส่งค่าแบบอ้างอิง (Passing by reference) ซึ่งเป็นการส่งตำแหน่งที่อยู่ของข้อมูลเข้าไปแทน ทำให้การทำงานรวดเร็ว และอำนวยความสะดวกในกรณีที่ต้องการให้ในฟังก์ชันเปลี่ยนแปลงค่าภายนอก มาดูตัวอย่างการส่งค่าแบบ Passing by reference

<?php

function swap_ref(&$a, &$b) {
    $temp = $a;
    $a = $b;
    $b = $temp;
}

$a = 1;
$b = 5;
echo "Before swap: a = $a, b = $b\n";
swap_ref($a, $b);
echo "After swap: a = $a, b = $b\n";

?>

ในตัวอย่าง ฟังก์ชัน swap_ref() นั้นมีพารามิเตอร์เป็นแบบ Passing by reference เราใส่เครื่องหมาย & หน้าตัวแปรพารามิเตอร์ของฟังก์ชัน เช่น swap_ref(&$a, &$b) โดยจะทำตัวในฟังก์ชันใช้ค่าตำแหน่งเดียวกันกับตัวแปรนอกฟังก์ชัน

Before swap: a = 1, b = 5
After swap: a = 5, b = 1

นี่เป็นผลลัพธืของโปรแกรม เมื่อมีการเปลี่ยนแปลงค่าภายในฟังก์ชันตัวแปรภายนอกก็เปลีย่นแปลงเช่นกัน หรือกล่าวอีกนัยหนึ่ง มันเป็นตัวแปรเดียวกันที่ทำงานในสถานที่ที่แตกต่างกัน

Recursive function (ฟังก์ชันเรียกใช้ตัวเอง)

Recursive function คือการที่ฟังก์ชันมีคุณสมบัติในการเรียกใช้งานตัวเองได้ เพื่อบุรรลุผลการทำงานบางอย่าง ฟังก์ชันประเภทนี้ก็เหมื่อนฟังก์ชันปกติ แต่การทำงานจะแตกต่างกันคือฟังก์ชันจะเรียกใช้ตัวเองจนกว่าจะพบกับเงื่อนที่เรียกว่า ฺBase condition เพื่อสิ้นสุดการเรียกใช้ตัวเอง เราจะยกตัวอย่างกับสถานการณ์สำหรับการใช้ Recursive function ในภาษา PHP

เราจะเขียนโปรแกรมสำหรับการคำนวณหาค่าของ Factorial และ Fibonacci sequence ด้วย Recursive function

<?php

function fatorial($number) {
    if ($number == 0 || $number == 1) {
        return 1;
    } else {
        return $number * fatorial($number - 1);
    }
}

echo "Factorail\n";
echo "1! = " . fatorial(1) . "\n";
echo "3! = " . fatorial(3) . "\n";
echo "5! = " . fatorial(5) . "\n";

?>

ในตัวอย่าง เป็น Recursive function ในการหาค่า Factorial เพราะว่าสูตรในการหาค่า Factorial นั้นจะเป็นการนำคำตอบของตัวเลขก่อนหน้ามาคูณกับตัวเลขปัจจุบัน ดังนั้นเราจึงมาสามารถใช้ Recursive function สำหรับแก้ปัญหานี้ได้ โดยเรามี Base condition คือเมื่อค่าที่ต้องการหาเป็น 0 หรือ 1 จะส่งค่ากลับเป็น 1 เพราะว่าเราทราบว่า 0! และ 1! นั้นมีค่าเท่ากับ 1

return $number * fatorial($number - 1);

หลังจากนั้นฟังก์ชันจะเรียกใช้ตัวมันเองโดยการลดค่า $number ลงทีละ 1 จนกว่าจะพบกับ Base condition

Factorail
1! = 1
5! = 120

นี่เป็นผลการทำงานของโปรแกรมหาค่า Factorial ในภาษา PHP

อีกตัวอย่างหนึ่งสำหรับ Recursive function ที่น่าสนใจคือการหาลำดับของ Fibonacci number 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... ซึ่งเป็นลำดับอนุกรมของตัวเลข โดยตัวเลขปัจจุบันนั้นจะเท่ากับผลรวมของลำดับตัวเลขสองตัวก่อนหน้า โดยตัวเลขลำดับเริ่มต้นคือ 0 และ 1 ซึ่งเป็นตัวเลขแรกและตัวแลขทีสองของอันดับ นี่เป็นตัวอย่างของโปรแกรมในการหาลำดับ

<?php

function fibonacci($sequence) {
    if ($sequence == 1) {
        return 0;
    } else if ($sequence == 2) {
        return 1;
    } else {
        return fibonacci($sequence - 1) + fibonacci($sequence - 2); 
    }
}

echo "Fibonacci sequence: ";
echo "0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...\n";
echo "Sequence 3 = " . fibonacci(3) . "\n";
echo "Sequence 8 = " . fibonacci(8) . "\n";
echo "Sequence 10 = " . fibonacci(10) . "\n";

echo "The first 20 sequences of the Fibonacci\n";
for ($i = 1; $i <= 20; $i++) {
    echo fibonacci($i) . ", ";
}
echo "...";

?>

ในตัวอย่าง ฟังก์ชัน fibonacci() เป็นฟังก์ชันในการหาลำดับของ Fibonacci โดยการใส่ลำดับที่ต้องการเข้าไปในฟังก์ชัน Base condition ของฟังก์ชันคือ 1 และ 2 และมีตัวเลขเริ่มต้นเป็น 0 และ 1 ตามลำดับ

return fibonacci($sequence - 1) + fibonacci($sequence - 2); 

นี่เป็นสูตรในการหาค่าของลำดับที่ i ของ Fibonacci ที่มีสูตรเป็น Ni = N(i - 1) + N(i - 2) ในรูปแบบของ Recursive function โดยฟังก์ชันจะเรียกใช้ตัวเองมันกว่จะพบกับ Base condition

Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
Sequence 3 = 1
Sequence 8 = 13
Sequence 10 = 34
The first 20 sequences of the Fibonacci
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 
987, 1597, 2584, 4181, ...

นี่เป็นผลลัพธ์ของโปรแกรม Fibonacci sequence ในตัวอย่าง ลำดับที่ 10 คือ 34 ซึ่งเป็นผลรวมจากสองอันดับก่อนหน้าคือ 9 และ 8 หรือ 13 + 21 และเรายังแสดง 20 ลำดับแรกของ Fibonacci

Variable scope (ขอบเขตของตัวแปร)

ในภาษา PHP เมื่อมีการสร้างและใช้งานฟังก์ชันนั้น คุณต้องเข้าใจเกี่ยวกับขอบเขตการใช้งานและการเข้าถึงตัวแปร ซึ่งในภาษา PHP นั้นตัวแปรภายในฟังก์ชันจะไม่สามารถเข้าถึงตัวแปรภายนอกฟังก์ชันได้ นอกจากเราประกาศตัวแปรให้เป็น global variable

<?php

$name = "Marcus";

function hello() {
    global $name;
    echo "Hello ". $name . "\n";
}

hello();

?>

ในตัวอย่าง เป็นการเข้าถึงตัวแปรจากภายในฟังก์ชัน เราใช้คำสั่ง global $name; เพื่อทำให้ตัวแปร $name; สามารถเข้าถึงได้ภายในฟังก์ชันดังกล่าว และเราเรียกตัวแปรที่อยู่ภายนอกฟังก์ชันว่า Global variable หรือ Global scope variable

ในบทนี้ คุณได้เรียนรู้เกี่ยวกับฟังก์ชันในภาษา PHP เราได้พูดเกี่ยวกับการประกาศและการใช้งานฟังก์ชัน และฟังก์ชันในรูปแบบอื่นๆ ที่คุณจำเป็นจะต้องทราบ เช่น Passing by reference และ Recursive function รวมถึงขอบเขตของตัวแปร

บทความนี้เป็นประโยชน์หรือไม่?Yes·No