Php 显示序列化数组

Php 显示序列化数组,php,sql,Php,Sql,我有一个数组正在通过如下表单收集: <select multiple="multiple" name="contractors[]" > 它以下面的格式将数组保存在DB中,但我无法正确显示它。当我拉动整个屏幕时,它显示: a:4:{i:0;s:28:Contractor1";i:1;s:15:"Contractor2";i:2;s:10:"Contractor3";} 如何使其以更可读的格式显示 $result = mysql_query("SELECT * FROM form_

我有一个数组正在通过如下表单收集:

<select multiple="multiple" name="contractors[]" >
它以下面的格式将数组保存在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>";
$result=mysql\u查询(“按作业名从表单2组中选择*);
回声“
职务名称
承包商
笔记
";
while($row=mysql\u fetch\u数组($result))
{
回声“;
回显“$row['jobname']”;
echo“$row['contractors]”;
回显“$row['notes']”;
回声“;
}
回声“;

使用
取消序列化($serializedoptions)
将其转换回数组。如果您想查看它,请使用
var\u dump($unserialized)

必须取消序列化。在处理数据之前,只需对数据使用
取消序列化
功能即可。在您的情况下,将返回一个数组

如果您找到支持PHP的代码,其他语言也可以取消序列化PHP
serialize()
。例如,下面是JavaScript的一个示例:

编辑:

在更新添加的代码时,可以在取消序列化该值后将其显示为任何其他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>";
}
?>

在未序列化的阵列上使用
打印

print_r(unserialize($serializedArray));

您可以使用unserialize命令。然后,可以使用var_dump()或print_r()回送它

在上面的HTML表中,您必须进一步细分$row['contractors']的结果

首先,你要对这个值进行非序列化,比如说

$contractors=取消序列化($row['contractors'])

然后,您可以遍历$contractors的新数组,并在每个数组后面回显一个
,所有这些都在同一个TD中


实际上,我无法取消序列化上述序列化数据,因此我无法为您编写循环。

我已对问题进行了编辑,以获得更详细的信息。如何取消消毒?我添加了一个代码示例。提示:请务必使用
htmlspecialchars()
来转义您的HTML。非常感谢您的帮助,效果非常好!谢谢你给我额外的小费。
<?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>";
}
?>
print_r(unserialize($serializedArray));