gpt4 book ai didi

php - 序列化数组时,不会序列化最后一个数字

转载 作者:行者123 更新时间:2023-11-28 23:28:43 25 4
gpt4 key购买 nike

在这个程序中,我试图从 MySQL 表中取出一个序列化数组,然后向其中添加一个结果,然后重新序列化该数组并将其放回表中。这是我的代码:

for($i = 0; $i < $count; $i++){
$query = "SELECT `assignment_assigned` FROM `users` WHERE isAdmin = 0 LIMIT 1";
$result = mysqli_query($con, $query);
if($result === FALSE) {
echo "Failed".mysql_error();
} else {
$unserializedVal = unserialize(implode(mysqli_fetch_array($result)));
$array = array_push($unserializedVal, $val);
$serializedVal = serialize($unserializedVal);
}
<h1><?php print_r($unserializedVal); ?></h1>

当我这样做时,我检索了数组并可以很好地反序列化它,但是当我尝试重新序列化它时,出现了:

a:8:{i:0;i:2;i:1;i:3;i:2;i:4;i:3;i:5;i:4;i:6;i:5;i:7;i:6;i:8;i:7;s:2:"10";}

原始的序列化字符串是这样的:

a:7:{i:0;i:2;i:1;i:3;i:2;i:4;i:3;i:5;i:4;i:6;i:5;i:7;i:6;i:8;}

我追加最后一个数字之前的数组如下所示:

Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 )

在附加最后一个数字之后:

Array ( [0] => 2 [1] => 3 [2] => 4 [3] => 5 [4] => 6 [5] => 7 [6] => 8 [7] => 10 )

这里有什么帮助吗?

最佳答案

您正在将 s:2:"10"; 添加到您的序列化数组中,因为您添加的值是一个字符串,而不是一个整数。

您可以使用 intval() 将字符串转换为整数。

$val = intval($val);

对于错误检查,intval() 将返回 0。

编辑以修复数据库数据将排列的错误。

$originalSerializedVal = mysqli_fetch_array($result);
$unserializedVal = unserialize($originalSerializedVal['0']);
$val = intval($val);
// add error handling here
$array = array_push($unserializedVal, $val);
$serializedVal = serialize($unserializedVal);

注意:删除了其他人指出的 implode()mysqli_fetch_array 中的数据是一个数组,但您只对所选字段感兴趣。 implode 会将数组转换为字符串,但这是不必要的。

关于php - 序列化数组时,不会序列化最后一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38174930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com