萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網路程式設計 >> PHP 程式設計

PHP extract() 與 compact() 變數陣列互轉實戰

compact():多個變數合併為陣列

接受變數名稱字串作為參數,以變數名為鍵、值為值建立關聯陣列:

$name = 'phpff';
$email = 'phpff@phpff.com';
$info = compact('name', 'email');
// 結果:['name' => 'phpff', 'email' => 'phpff@phpff.com']

extract():陣列解包為變數

將陣列鍵值對轉為同名變數,支援衝突處理旗標(EXTR_OVERWRITE、EXTR_SKIP、EXTR_PREFIX_SAME 等):

$capitalCities = [
    'England' => 'London',
    'Scotland' => 'Edinburgh',
    'Wales' => 'Cardiff'
];
extract($capitalCities);
echo $Wales; // Cardiff

完整範例

$myArray = ['a' => 'Cat', 'b' => 'Dog', 'c' => 'Horse'];
extract($myArray);
echo "$a = $a; $b = $b; $c = $c";
// 輸出:$a = Cat; $b = Dog; $c = Horse

安全性提醒

  • 勿對不可信資料(如 $_GET、$_POST)直接使用 extract(),會污染變數空間,造成安全漏洞
  • 若必須使用,請加旗標 EXTR_PREFIX_ALL 加前綴:extract($_POST, EXTR_PREFIX_ALL, 'form') 產生 $form_name 等
  • 優先考慮直接存取陣列元素,代碼更清晰安全
copyright © 萬盛學電腦網 all rights reserved