2011-01-07 102 views
1

我想添加一個元素到數組的開頭,但是這個數組有時候可能是空的。我已經使用array_unshift()嘗試,但它似乎不喜歡空數組...我應該簡單地檢查了空數組和手動附加元素,還是array_unshift()不介意空數組,但我只是一個傻瓜?array_unshift()與空數組

這是我的時刻的代碼:

 
$sids = array(); 
$sids = explode(",", $sid['sids']); 

array_unshift($sids, session_id()); 

$sids陣列的內容從數據庫中取出,並逗號分隔值。

感謝,

詹姆斯

編輯

我已經成功,現在解決這個問題 - 對不起大家!

下面是更新的代碼:

 
$sids = array(); 

if(!empty($row['sids'])) 
{ 
    $sids = explode(",", $row['sids']); 
} 

array_unshift($sids, session_id()); 
+0

你可以發佈你的當前代碼嗎? – 2011-01-07 20:22:05

+2

你是什麼意思「不喜歡?」你初始化變量(即通過使用`array()`)還是你使用一個未定義的變量? – 2011-01-07 20:22:43

回答

2

如果$ SID [「SIDS」]是空的,爆炸將返回FALSE 然後$ SIDS將等於假 和後續調用array_unshift將失敗。

你或許應該確保$ SIDS是調用array_unshift之前的數組。 這裏有一個辦法做到這一點:

if(!empty($sid['sids'])) 
    $sids = explode(",", $sid['sids']); 
else 
    $sids = array(); 

array_unshift($sids, session_id()); 
0

array_unshift()通過引用接受陣列參數。這意味着它實際上必須是是一個變量,而不是像array()這樣的表達式。這也意味着它會修改你傳遞的變量,而不是返回一個添加了元素的新數組。下面就來說明這樣一個例子:

$array = array(); 
array_unshift($array, 42); 
var_dump($array); // Array now has one element, 42 
0
$sids = explode(",", $sid['sids']); 
if (!is_array($sids)) { 
    $sids = array(); 
} 
array_unshift($sids, session_id()); 
1

首先,你的第一行代碼是沒有意義的;爆炸總是返回一個值,無論是數組還是FALSE。您保證在您致電爆炸後覆蓋該值。

其次,你的代碼應該工作。一個小小的編輯我會做的是:

<?php 
$sids = array(); 
$sids = explode(",", $sid['sids']); 
if(is_array($sids)) 
    array_unshift($sids, session_id()); 
?> 

因爲(即使你的代碼說,否則,那PHP文件另有規定),爆炸可能無法總是返回數組。

另一個可能有用的信息是是否報告了任何錯誤,如果有,錯誤是什麼。

祝你好運!