为什么在反序列化后数组后面有文本“1”

时间:2017-03-27 09:58:30

标签: javascript php arrays

对不起我以前的英语不好。我想问为什么在从我的数据库反序列化后,数组后面有一个文本“1”。仔细查看图片:

my database (the data is serialized)

output of after unserialize

<div class="form-group">
                                                        <label class="control-label col-md-3">Dokumen Pendukung:</label>
                                                        <div class="col-md-4">
                                                            <p class="form-control-static"> <?php echo print_r(unserialize($supportDocument)); ?> </p>
                                                        </div>
                                                    </div>

我必须尝试检查我的代码,没有可疑的代码。请帮帮我..谢谢。

public function addProposal($DocumentSupport) {
    try {

        $stmt = $this->connect->prepare("INSERT INTO tbl_proposal(supportDocument)VALUES(:supportDocument)");



        $stmt->bindParam(":supportDocument", serialize($DocumentSupport));


        $stmt->execute();
        return $stmt;

    } catch (PDOException $e) {
        echo "Error " . $e->getMessage();
    }
}

1 个答案:

答案 0 :(得分:3)

您正在打印print_r()的返回值:

echo print_r(unserialize($supportDocument));

并且,如记录所示,它返回true

  

return参数为TRUE时,此函数将返回一个字符串。否则,返回值为TRUE

...当converted to string时打印为1

  

布尔值TRUE转换为字符串"1"。布尔FALSE是   转换为""(空字符串)。这允许转换回来   在布尔值和字符串值之间。

你应该摆脱echo

print_r(unserialize($supportDocument));

您还可以切换到var_dump(),这会产生更精确的输出(例如,它不会将布尔值转换为空字符串):

var_dump(unserialize($supportDocument));