PHP:unserialize()不';不返回数组

PHP:unserialize()不';不返回数组,php,serialization,Php,Serialization,下面的代码用于在字段中插入序列化数据(顺序图片): 我第一次执行它时,它工作正常。至少,它存储b:0 但是当我再次执行它时,$pictures\u id的值是bool(false),我希望是数组类型 有什么想法吗 问候 Javi您的问题是,您试图在$category->getOrderPictures()的内容初始化之前对其进行非序列化,因此$pictures\u id在其中得到布尔值false,这是非序列化失败的结果。然后,array\u push()失败,因为$pictures\u id不是

下面的代码用于在字段中插入序列化数据(顺序图片):

我第一次执行它时,它工作正常。至少,它存储
b:0order_pictures
字段中选择code>

但是当我再次执行它时,
$pictures\u id
的值是
bool(false)
,我希望是数组类型

有什么想法吗

问候


Javi

您的问题是,您试图在
$category->getOrderPictures()
的内容初始化之前对其进行
非序列化,因此
$pictures\u id
在其中得到布尔值
false
,这是
非序列化
失败的结果。然后,
array\u push()
失败,因为
$pictures\u id
不是数组

试试这个:

$pictures_id = $category->getOrderPictures();
if($pictures_id)
    $pictures_id = unserialize($pictures_id);
else
    $pictures_id = array();
array_push($pictures_id, $picture->getId());
$category->setOrderPictures(serialize($pictures_id));
我第一次执行它时,它工作正常。至少,它存储b:0

就是这样:
b:0
不是数组,而是布尔值(
false

取消PHPs交互模式(
php-a

这意味着,在将序列化放入数据库之前,它可能会给您带来意外的结果。当从数据库中读取时,一切正常,但内容不是您所表达的内容。

var\u dump($pictures\u id)请查看它所说的
var_dump(取消序列化($category->getOrderPictures())?返回
b:0或长字符串?var_dump($category->getOrderPictures());请严肃地说,您没有提供足够的数据来解决您的问题。
var_dump(unserialize($category->getOrderPictures())请。对长弦特别感兴趣。
$pictures_id = $category->getOrderPictures();
if($pictures_id)
    $pictures_id = unserialize($pictures_id);
else
    $pictures_id = array();
array_push($pictures_id, $picture->getId());
$category->setOrderPictures(serialize($pictures_id));
php > var_dump(unserialize('b:0;'));
bool(false)
php > var_dump(serialize(false));
string(4) "b:0;"