序列化添加意外数据

时间:2014-07-23 10:40:16

标签: php

$post = &$_POST;
$arr = $post['articles'];
var_dump($arr);
//array (size=3)  0 => string '145' (length=3)  1 => string '123' (length=3)  2 => string '128' (length=3)

$sArr = serialize($arr);
var_dump($sArr);
//string 'a:3:{i:0;s:3:"145";i:1;s:3:"123";i:2;s:3:"128";}' (length=48)

die();

我有一个数组,我希望序列化以存储在我的数据库中。

但是输出不是预期的,我需要一个像:

这样的字符串
{145, 123, 128} 

但是添加了一些其他数据 - 为什么以及如何删除它?

4 个答案:

答案 0 :(得分:9)

原因可以在PHP documentation中找到。它说

  

用于在周围存储或传递PHP值而不会丢失其   类型和结构

所以serialize函数也必须编码值类型等。我猜测i是索引,而s是类型"字符串"。

要获得结果,请改用implode

答案 1 :(得分:7)

您可以将json_encode用于任何复杂数据及其标准。

<?php
$arr=[145, 123, 128];//considering your input is like this
echo json_encode($arr);
?>

这将完全回答

[145, 123, 128]

如果你需要花括号那么多,你可以使用它

echo '{'.substr(json_encode($arr),1,-1).'}';

答案 2 :(得分:2)

加入会做出魔术:

$sArr = '{' . join(', ', $arr) . '}';

答案 3 :(得分:2)

你试过了吗?

$sArr = implode(",", $arr);