2012-10-09 48 views
2

我有一個數組經由形式存在收集象下面這樣:顯示連載陣列

<select multiple="multiple" name="contractors[]" > 

輸入代碼來保存在DB中的陣列。

$options = $_POST['contractors']; 
$serializedoptions = serialize($options); 

它以下面的格式將數組保存在數據庫中,但我無法正確顯示它。當我拉整個它顯示:

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>"; 

回答

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>"; 
} 
?> 
+0

我已編輯我的問題更詳細。我如何消毒? – PaperBagged

+0

我添加了一個代碼示例。提示:一定要用'htmlspecialchars()'來轉義你的HTML。 – jimp

+1

非常感謝你的完美工作!並感謝您的額外提示。 – PaperBagged

0

使用unserialize($serializedoptions)將其轉換回數組。如果你想查看它,請使用var_dump($unserialized)

1

的序列化的陣列上使用print_r

print_r(unserialize($serializedArray)); 
1

可以使用反序列化命令。然後可以使用var_dump()或print_r()來回顯它。

在上面的HTML表中,您將不得不進一步細分$ row ['Contractors']的結果。

因此,首先,你會反序列化該值,因此,可以說

$承包商=反序列化($行[ '承包商']);

然後,您可以遍歷$承包商的新數組,並在每個承包商之後響應
,全部在同一個TD內。

我不能真正反序列化上面的序列化數據,所以我不能爲你寫循環。

+0

上面jimp的代碼對我來說看起來不錯。 – SilicaGel