2010-09-09 51 views
1

將數組添加到PHP中已包含數組的$ _SESSION變量的正確方法是什麼?

比如我有一個會話變量:

$_SESSION['test'] 

那麼我這樣做:

$_SESSION['test'] = array('sample' => '1', 'sample2' => 2); 

然後,我回到這個會話數據在稍後的日期。我怎麼會將另一個數組添加到$ _SESSION ['test']而不破壞已經存在的內容?

回答

1

獲取當前值的大小,如果它是1(表示有一個數組),則創建一個新數組,其中包含test之前的值並添加新值。然後將test值更改爲這個新的二維數組。

看起來類似的東西:

$_SESSION['test'] = array('sample' => '1', 'sample2' => 2); 

if(is_array($_SESSION['test']) && sizeof($_SESSION['test'] == 1){ 
    $newValue = array(); 
    $newValue[] = $_SESSION['test']; 
    $newValue[] = $yourOtherArray; 
    $_SESSION['test'] = $newValue; 
} 

快速又簡單。哦,不太確定這是否是「正確」的方式。

+0

鑑於'array_merge'函數,看起來像是一大堆額外和不必要的工作。儘管測試它是否是一個數組可能是一個好主意。 – 2010-09-09 20:20:34

+0

但'array_merge()'將它們合併在一起,在這裏它將保持em分離。 – jolt 2010-09-09 20:32:07

+0

是的,我找到你。我想這一切都取決於OP的意思,因爲他不清楚/可以採取多種方式。如果它是多維的,它也將取決於「新陣列」的格式。 +1 – 2010-09-09 20:35:55

1

如果我正確理解你,你可以使用array_merge()來合併數組。

$new_array = array('x' => array('extra'))); 
$_SESSION['test'] = is_array($_SESSION['test'])?array_merge($_SESSION['test'], $new_array):$new_array; 

編輯

更新做一個is_array檢查,如果它被合併的數組,否則設置爲$new_array

3

你的意思是添加另一個數組元素?

如果是的話,你會怎麼做:

$_SESSION['test']['sample3'] = 3; 

但如果沒有,那麼它聽起來就像是array_merge你的票。