我想在数组的开头添加一个元素,但有时候这个数组可能是空的。我尝试过使用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());
答案 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());