ในภาษา PHP นั้นตัวแปรจะต้องขึ้นต้นด้วย $ ( ดอลล่าซายน์ ) เสมอ แล้วก็ตามด้วยตัวอักษรภาษาอังกฤษหรือ _ (อันเดอร์สกอ) ห้ามขึ้นต้นด้วยตัวอื่นนอกจากนี้ ตัวเลขก็ไม่ได้ ตัวอักษรแปลกๆก็ไม่ได้
อีกอย่างที่เป็นสิ่งน่าจดจำไว้ก็คือ ตัวแปรใน PHP ไม่จำเป็นต้องระบุประเภท และมองอักษรตัวเล็กกับตัวใหญ่เป็นคนละตัว $_init , $_Init

ตัวอย่าง

$__init = 0 ;
$init = 0;
$init_10 = 10;

ขอบเขตของตัวแปร

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

ตัวอย่าง

$s_username = 'wanchai' ;
 
function get_username()
{
	$s_username = 'somchai';
}

ถ้าสมมติว่าเราต้องการเข้าใช้งานตัวแปรนอกฟังก์ชั่นจากในฟังก์ชั่นจะทำอย่างไร

ตัวอย่าง

$s_username = 'wanchai' ;
 
function get_username()
{
	global $s_username ;
}

ใช้คำว่า global นำหน้า ตัวแปร $s_username ก็จะถูกมองว่าเป็นตัวแปรตัวเดียวกันกับที่เก็บค่า wanchai ไว้

ตัวแปรแบบ CONSTANT

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

define( 'VAT' , 0.007);
define( 'VERSION' , 1.0 );

เวลาใช้งาน

echo VERSION ;

ตัวแปรซ้อนตัวแปร

ภาษาอังกฤษเรียกว่า variable variable ดูตัวอย่างก่อนดีกว่า

$s_animal = 'cat' ;
$$s_animal = 'dog'

ตัวในบรรทัดที่สอง ที่มีดอลล่าซายด์สองตัวนั่นแหละเขาเรียก variable variable เวลามองตัวแปรชนิดนี้ท่านจะต้องจินตนาการให้เห็นเป็น $cat เพราะตัวแปร $s_animal มันเก็บ cat ไว้ เมื่อเอาดอลล่า
ซายด์อีกตัวมาต่อข้างหน้ามันก็เป็นตัวแปร $cat ประโยชน์ของมันคือไว้สร้างตัวแปรใหม่ๆ ขณะ runtime

ตัวแปรแบบ Superglobals

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

$_SERVER
เป็นตัวแปรอะเรย์ที่เก็บค่าสภาพแวดล้อมต่างๆของระบบ ตัวที่ใช้บ่อยก็เห็นจะได้แก่ $_SERVER[‘REMOTE_ADDR’] เก็บค่า IP แอดเดรสของคนที่เข้าเว็บ

$_GET
เป็นตัวแปรอะเรย์เก็บค่าที่ส่งจากฟอร์มที่ระบุ method เป็น get หรือค่า get ที่ส่งมาพร้อม url

http://www.select2web.com/index.php?page=3

$_POST
เป็นตัวแปรอะเรย์เก็บค่าที่ส่งจากฟอร์มที่ระบุ method เป็น post

$_COOKIE
เป็นตัวแปรอะเรย์เก็บค่าตัวแปรคุ้กกี้ไว้

$_FILES
เป็นตัวแปรอะเรย์ที่เก็บค่าต่างๆของไฟล์ที่ถูกอัปโหลดมาผ่านฟอร์ม ตัวแปรตัวนี้จะถูกสร้างก็ต่อเมื่อมีการอัปโหลดไฟล์ขึ้นเซิฟเวอร์เท่านั้น

$_ENV
เป็นตัวแปรอะเรย์ที่เก็บค่าสภาพแวดล้อมของระบบ ปัจจุบันตัวแปรตัวนี้เขาไม่นิยมใช้กันแล้ว เขาไปใช้ตัวแปร $_SERVER แทน
ข่าวว่าจะเลิกใช้ใน PHP เวอร์ชั่น 6

$_REQUEST
เป็นตัวแปรอะเรย์ที่เก็บค่า get , post , cookie เขาก็ไม่นิยมใช้แล้วเหมือนกันตัวแปรตัวนี้ เพราะว่าเวลาเราอ่านโค้ดเราจะไม่ทราบว่าตัวแปรตัวนั้นๆ
มันถูกส่งมาผ่านฟอร์มหรือเป็นตัวแปร cookie กันแน่ ใช้ $_GET,$_POST,$_COOKIE ดีว่า เพราะมองปุ๊บเราก็รู้ประเภทของมัน ถ้าผมจำไม่ผิด
ตัวแปร $_REQUEST จะถูกเลิกใช้ใน PHP เวอร์ชั่น 6

$GLOBALS
ตัวแปรตัวนี้เก็บทุกสิ่งทุกอย่างที่กล่าวมาด้านบน เขาจะเลิกใช้ใน PHP เวอร์ชั่น 6 แล้วเหมือนกันครับ

ถ้าท่านอยากทราบว่าภายในตัวแปร $_SERVER มีอะไรบ้าง ให้ใช้คำสั่ง

var_dump( $_SERVER ) ;

คนที่เขียนโปรแกรมมานานๆ ลองถามตัวเองหน่อยสิครับ ว่าเบสิคเหล่านี้เราลืมไปแล้ว กี่ตัว สำหรับผมเอง ลืมไปอย่างน้อย 3