ขอบเขตตัวแปร PHP
ขอบเขตตัวแปร PHP
ใน PHP สามารถประกาศตัวแปรได้ทุกที่ในสคริปต์
ขอบเขตของตัวแปรเป็นส่วนหนึ่งของสคริปต์ที่สามารถอ้างอิง/ใช้ตัวแปรได้
PHP มีขอบเขตตัวแปรที่แตกต่างกันสามขอบเขต:
- ท้องถิ่น
- ทั่วโลก
- คงที่
ขอบเขตระดับโลกและระดับท้องถิ่น
ตัวแปรที่ประกาศนอกฟังก์ชันมีขอบเขตสากลและสามารถเข้าถึงได้ภายนอกฟังก์ชันเท่านั้น:
ตัวอย่าง
แปรผันตามขอบเขตทั่วโลก:
<?php
$x = 5; // global scope
function myTest() {
// using x inside this function will generate an error
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
echo "<p>Variable x outside function is: $x</p>";
?>
ตัวแปรที่ประกาศภายในฟังก์ชันมีขอบเขตภายในและสามารถเข้าถึงได้ภายในฟังก์ชันนั้นเท่านั้น:
ตัวอย่าง
แปรผันตามขอบเขตท้องถิ่น:
<?php
function myTest() {
$x = 5; // local scope
echo "<p>Variable x inside function is: $x</p>";
}
myTest();
// using x outside the function will generate an error
echo "<p>Variable x outside function is: $x</p>";
?>
คุณสามารถมีตัวแปรโลคัลที่มีชื่อเดียวกันในฟังก์ชันต่างๆ ได้ เนื่องจากตัวแปรโลคัลจะรับรู้โดยฟังก์ชันที่ประกาศเท่านั้น
PHP คำหลักทั่วโลก
คีย์เวิร์ดใช้เพื่อเข้าถึง ตัวแปรglobal
ส่วนกลางจากภายในฟังก์ชัน
ในการดำเนินการนี้ ให้ใช้global
คีย์เวิร์ดก่อนตัวแปร (ภายในฟังก์ชัน):
ตัวอย่าง
<?php
$x = 5;
$y = 10;
function myTest()
{
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // outputs 15
?>
PHP ยังเก็บตัวแปรโกลบอลทั้งหมดไว้ในอาร์เรย์ที่เรียกว่า
. ถือ ชื่อของตัวแปร อาร์เรย์นี้ยังสามารถเข้าถึงได้จากภายในฟังก์ชันและสามารถใช้เพื่ออัปเดตตัวแปรส่วนกลางได้โดยตรง$GLOBALS[index]
index
ตัวอย่างข้างต้นสามารถเขียนใหม่ได้ดังนี้:
ตัวอย่าง
<?php
$x = 5;
$y = 10;
function myTest()
{
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y; // outputs 15
?>
PHP คำหลักแบบคงที่
โดยปกติ เมื่อฟังก์ชันเสร็จสิ้น/ดำเนินการ ตัวแปรทั้งหมดจะถูกลบออก อย่างไรก็ตาม บางครั้งเราต้องการไม่ให้ตัวแปรในเครื่องถูกลบ เราต้องการมันสำหรับงานต่อไป
ในการดำเนินการนี้ ให้ใช้static
คีย์เวิร์ดเมื่อคุณประกาศตัวแปรในครั้งแรก:
ตัวอย่าง
<?php
function myTest()
{
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
จากนั้น ทุกครั้งที่มีการเรียกใช้ฟังก์ชัน ตัวแปรนั้นจะยังคงมีข้อมูลที่มีอยู่จากครั้งล่าสุดที่เรียกใช้ฟังก์ชัน
หมายเหตุ:ตัวแปรจะยังคงอยู่ในฟังก์ชัน