先看如下代码 ://获得数组
<?php if(isset($_COOKIE['id'])){
$record_str=$_COOKIE['id'];
$record=unserialize($record_str);
}
else $record=array();
?>
//获得当前ID
<?php if(isset($_GET['id'])){
$id=$_GET['id'];
$record=array_push($record,$id);
$record_str=serialize($record);
setcookie('id',$record_str);
}?>
//输出链接与数组
<?php for($i=1;$i<10;$i++){
echo "<a href='array_test.php?id=$i'>$i</a>"."</br>";
}?>
<?php print_r($record);?>运行结果为:
Warning: array_push() [function.array-push]: First argument should be an array in F:\PHPnow\htdocs\tv\array_test.php on line 17
1
2
3
4
5
6
7
8
9
当把第一个获得数组函数的IF语句去掉,直接换成$record=array()时运行正常,也就是说unserialize出来的“数组”并不是数组,这是什么原因呢?如何正常从COOKIE中取得数组?
<?php if(isset($_COOKIE['id'])){
$record_str=$_COOKIE['id'];
$record=unserialize($record_str);
}
else $record=array();
?>
//获得当前ID
<?php if(isset($_GET['id'])){
$id=$_GET['id'];
$record=array_push($record,$id);
$record_str=serialize($record);
setcookie('id',$record_str);
}?>
//输出链接与数组
<?php for($i=1;$i<10;$i++){
echo "<a href='array_test.php?id=$i'>$i</a>"."</br>";
}?>
<?php print_r($record);?>运行结果为:
Warning: array_push() [function.array-push]: First argument should be an array in F:\PHPnow\htdocs\tv\array_test.php on line 17
1
2
3
4
5
6
7
8
9
当把第一个获得数组函数的IF语句去掉,直接换成$record=array()时运行正常,也就是说unserialize出来的“数组”并不是数组,这是什么原因呢?如何正常从COOKIE中取得数组?
在第一个if条件中,你的$record_str是经过serialize序列化的字符串吗?
在$record_str=$_COOKIE['id'];下面echo $record_str;看是什么值?
$id=$_GET['id'];
$record=array_push($record,$id);
$record_str=serialize($record);
setcookie('id',$record_str);
}?>
改为
$record_str = stripcslashes($_COOKIE['id']);$record=array_push($record,$id);
改为
array_push($record,$id);