PHP: Extract/Compact, สร้างตัวแปรจาก Array, เอาตัวแปรใส่ Array

เพราะว่าผมใช้ AuthComponent และ Acl ของ CakePHP ไม่ค่อยเป็น, แต่ว่าดันเล่น Development release, มันก็เลยไม่ค่อยมีคู่มือเท่าไหร่. ประสบการณ์ในการเขียน PHP ผมก็อ่านด้อยเปิดไปก็เจอของใหม่มากมาย extract และ compact ของเป็น 2 function ในสิ่งใหม่ที่เจอ.

extract มีหน้าที่สร้างตัวแปร จาก array แต่ว่า array ใน PHP นี่มันเป็น associative array ที่คล้าย Map ของ Java หรือ Dict ของ Python อะ.


 "b");
print "before: a = $a\n";
extract($x);
print "after: a = $a\n";
?>

พอลอง run โปรแกรมข้างบนดูก็จะได้

before: a =
after: a = b

ในทางกลับกัน compact จับตัวแปรใส่ array




ผมการ run ออกมาได้

Array
(
[a] => foo
)

สรุปว่า PHP ใช้ extract และ compact แปลงไปมาระหว่างตัวแปร และ Array  หรือถ้ามองอีกแง่คือแก้ $GLOBALS กับ array ตัวอื่นๆ.