當您有一個與一般全域變數同名的 $_SESSION 陣列元素時,請小心。
以下範例會導致 $wppa 陣列元素的行為難以預測,有些元素會被正常的程式碼更新,有些則不會,完全無法預測會發生什麼事。
<?php
global $wppa;
$wppa = array( 'elm1' => 'value1', 'elm2' => 'value2', ....等等...);
if ( ! session_id() ) @ session_start();
if ( ! isset($_SESSION['wppa']) ) $_SESSION['wppa'] = array();
if ( ! isset($_SESSION['wppa']['album']) ) $_SESSION['wppa']['album'] = array();
$_SESSION['wppa']['album'][1234] = 1;
$wppa['elm1'] = 'newvalue1';
print_r($_SESSION);
?>
這很可能會顯示 Array ( [wppa] => Array ( [album] => Array ( [1234] => 1 ) [elm1] => 'newvalue1' [elm2] => 'value2' ... 等等 ...
但是將 $wppa['elm1'] 設定為另一個值或引用它會產生不可預測的結果,可能是 'value1' 或 'newvalue1'。
最奇怪的行為是並非所有 $wppa[xx] 的元素都會顯示為 $_SESSION['wppa'][xx]。