array_unshift()带有空数组

时间:2011-01-07 20:19:55

标签: php arrays

我想在数组的开头添加一个元素,但有时候这个数组可能是空的。我尝试过使用array_unshift()但它似乎不喜欢空数组...我应该只检查空数组并手动附加元素,或array_unshift()不介意空数组但是我我只是个klutz?

此处是我的代码:

$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());

4 个答案:

答案 0 :(得分:3)

如果$ sid ['sids']为空,则explode将返回FALSE 然后$ sids将等于FALSE 并且随后对array_unshift的调用将失败。

在调用array_unshift之前,您应该确保$ sids是一个数组。 这是一种方法:

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

array_unshift($sids, session_id());

答案 1 :(得分:1)

首先,您的第一行代码毫无意义; explode总是返回一个值,无论是数组还是FALSE。一旦调用explode,你就可以保证覆盖该值。

其次,您的代码应该工作。我做的一个小编辑是:

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

因为(即使您的代码另有说明,并且PHP文档另有说明),爆炸可能总是返回一个数组。

另一条可能有用的信息是,是否报告了任何错误,如果是,则报告错误是什么。

祝你好运!

答案 2 :(得分:0)

array_unshift()通过引用接受数组参数。这意味着它实际上必须是变量,而不是像array()这样的表达式。它还意味着它将修改您传递的变量,而不是返回添加了元素的新数组。这是一个例子来说明这一点:

$array = array();
array_unshift($array, 42);
var_dump($array); // Array now has one element, 42

答案 3 :(得分:0)

$sids = explode(",", $sid['sids']);
if (!is_array($sids)) {
  $sids = array();
}
array_unshift($sids, session_id());