在使用 $_SESSION 数组元素时,请注意它们与普通全局变量同名的情况。
以下示例会导致 $wppa 数组元素的行为不可预测,有些元素会通过普通代码更新,有些不会,完全无法预测会发生什么。
<?php
global $wppa;
$wppa = array( 'elm1' => 'value1', 'elm2' => 'value2', ....etc...);
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' ... etc ...
但是将 $wppa['elm1'] 设置为另一个值或引用它会导致不可预测的结果,可能是 'value1' 或 'newvalue1'。
最奇怪的行为是 $wppa[xx] 中并非所有元素都以 $_SESSION['wppa'][xx] 的形式显示。