2011-01-07 16 views
1

配列の先頭に要素を追加したいが、この配列は時々空であるかもしれない。私はarray_unshift()を使用してみましたが、空の配列が好きではないようです...空の配列をチェックして手動で要素を追加するか、array_unshift()空の配列は気にしませんが、私はちょうどklutzですか?ここ空の配列を持つarray_unshift()

は、現時点では私のコードである:$sidsアレイの

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

array_unshift($sids, session_id()); 

内容がデータベースから取得され、分離値カンマれます。

おかげで、

ジェームズ

EDITは

私は今、この問題を解決するために管理してきました - ごめんみんな!

 
$sids = array(); 

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

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

現在のコードを投稿できますか? –

+2

「好きではないですか?変数を初期化したか( 'array()'を使用して)、または未定義の変数を使って作業していますか? –

+0

空の配列に対して 'array_unshift()'を使っても問題ありません。それは期待どおりに動作します。しかし、非配列で呼び出すのは問題です。 – Floern

答えて

2

の$ SID [「SIDは」]空の場合は、 FALSEと失敗しますするarray_unshiftする後続の呼び出しと同じになりますFALSE 次に$ SIDを返します爆発。

array_unshiftを呼び出す前に$ sidsが配列であることを確認してください。 はここでそれを行う方法です:

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

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

説明をありがとう:-) +1とSOにようこそ – Bojangles

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

まず第一に、コードのあなたの最初の行は無意味です。 explodeは、配列かFALSEのいずれであろうと、常に値を返します。あなたが爆発を呼び出すと、その値を上書きすることが保証されます。

第2に、コードである必要があります。私が作ると思います一つのマイナーな編集はこれです:

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

(あなたのコードは、PHPのドキュメントにはそうでないと言うそうでないと、と言っているにもかかわらず)、は常に配列を返さないことがあり、爆発ので。

有用な情報として、エラーが報告されているかどうか、そうであればエラーがあったかどうかなどがあります。

運が良かった!

関連する問題