GORAGOD.com

operator &

& เป็นเครื่องหมาย ชี้ไปยังตำแหน่งในหน่วยความจำเลยครับ ทำให้เมื่อเปลี่ยนค่าใด ในตัวแปรแล้ว ตัวแปรที่เชื่อมอยู่จะเปลี่ยนตาม

อธิบายอาจงง ดูที่ตัวอย่าง

<?
   $a = array( 1 => "A" ); //$a[1]="A"
   print_r( $a ); //Array( [1] => A )

  $b = &$a[1]; //$b ชี้ไปที่ตำแหน่งของ $a[1] บนหน่วยความจำ
  echo($b);//ค่าที่ $b = "A"

  $a[1] = 'XX'; //ทดลองเปลี่ยนค่าที่ $a[1]
  print_r( $a ); //Array( [1] => XX )
  echo( $b );//ค่าที่ $b = "XX"
?>

จะเห็นว่าเมื่อ $b = pointer ของ $a[1] แล้วหากค่าของ $a[1] เปลี่ยน ค่าที่ $b ก็จะเปลี่ยนตาม