我通过下面的表格收集数组:
<select multiple="multiple" name="contractors[]" >
输入代码以将数组保存在数据库中。
$options = $_POST['contractors'];
$serializedoptions = serialize($options);
它以下面的格式将数组保存在DB中,但我无法正确显示它。当我拉整个它显示:
a:4:{i:0;s:28:Contractor1";i:1;s:15:"Contractor2";i:2;s:10:"Contractor3";}
如何让它以更易读的格式显示?
$result = mysql_query("SELECT * FROM form_2 GROUP BY jobname");
echo "<table border='1'>
<tr>
<th><font size='1'>Job Name</th>
<th><font size='1'>Contractors</th>
<th><font size='1'>Notes</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td><font size='1'>" . $row['jobname'] . "</font></td>";
echo "<td><font size='1'>" . $row['contractors'] . "</font></td>";
echo "<td><font size='1'>" . $row['notes'] . "</font></td>";
echo "</tr>";
}
echo "</table>";
答案 0 :(得分:4)
序列化的必须是非序列化的。在使用数据之前,只需对数据使用unserialize
函数即可。在您的情况下,将返回一个数组。
http://php.net/manual/en/function.unserialize.php
$options = unserialize($serializedoptions);
如果您找到支持代码,其他语言也可以反序列化PHP serialize()
。例如,以下是JavaScript的一个:http://phpjs.org/functions/unserialize/
编辑:
更新您添加的代码,一旦您反序列化该值,就可以像任何其他PHP变量一样显示它。
<?php
while ($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td><font size='1'>" . $row['jobname'] . "</font></td>";
echo "<td><font size='1'>";
$contractors = unserialize($row['contractors']);
foreach ($contractors as $contractor)
echo htmlspecialchars($contractor).'<br/>';
echo "</font></td>";
echo "<td><font size='1'>" . $row['notes'] . "</font></td>";
echo "</tr>";
}
?>
答案 1 :(得分:1)
在反序列化数组上使用print_r
:
print_r(unserialize($serializedArray));
答案 2 :(得分:1)
您可以使用unserialize命令。然后,您可以使用var_dump()或print_r()回显它。
在上面的HTML表中,您必须进一步细分$ row ['contractors']的结果。
首先,你要反序列化该值,所以我们说
$ contractors = unserialize($ row ['contractors']);
然后你可以遍历新的$ contractors承包商,并在每个承包商之后回复一个,在同一个TD内。
我实际上无法反序列化上面的序列化数据,所以我不能为你编写循环。
答案 3 :(得分:0)
使用unserialize($serializedoptions)
将其转换回数组。如果要查看,请使用var_dump($unserialized)