0
我最近創建了一個帶有複選框的搜索功能,用於查詢提交的複選框值並將這些值返回到表中。 然而問題是某些複選框值(在數據庫中)被序列化。當我在每個複選框值的foreach中顯示查詢結果變量時,它將返回序列化字符。顯然,我想只顯示沒有怪異字符的字符串。反序列化查詢(數組)數據不起作用
原來的代碼,其中返回整個序列化的字符如下:
if(count($tmp)>0){
for($i=0;$i<count($tmp);$i++){
echo "<tr>";
foreach($tmp[$i] as $key=>$value){
echo"<td>" . $value . "</td>";
}
echo "</tr>";
}
}
echo '</table>';
所以只顯示數據庫值的字符串我try'd使用反序列化功能($ tmp就是存儲查詢結果的變量)。然而有幾個問題這一點,即:
- 回聲犯規與反序列化
- 工作數據庫和查詢也可以返回非序列化的數據(所以$ TMP變量可以包含一個序列化值與怪異。字符和b。只是一個非序列化的普通字符串)。
- 由於反序列化功能也得到了「正常」的字符串,這些法線trings將被輸出作爲空白..
- 出於某種原因,陣列/序列化的數據(使用的print_r)的輸出中顯示沒有字符串,而是整個數組名稱,如下所示:
Array ([0] => [1] => Netherlands)
。
下面的代碼是如何try'd反序列化數據:
if(count($tmp)>0){
for($i=0;$i<count($tmp);$i++){
echo "<tr>";
foreach($tmp[$i] as $key=>$value){
echo "<td>";
$b=unserialize($value);
print_r($b);
echo "</td>";
}
echo "</tr>";
}
}
echo '</table>';
雖然,如前面所說的,上面的代碼顯示整個陣列名稱和數據庫的「正常」的串也被查詢的內容顯示爲空白。
那麼如何解決這個問題呢?
預先感謝您
啊,太棒了謝謝。然而,[1]並不總是相同的,也可能是數組包含2個值(或更多),那麼它將是Array([0] => [1] => Netherlands),Array([0 ] => [2] => America),Array([0] => [3] => England)。因此,[]是一個可以改變的值(如果只選擇了一個選項,無論名稱是什麼,該選項總是[1],儘管用戶選擇多於1個選項時,[2],[ 3]將被分配(選擇列表是按字母順序排列的,所以如果選擇了所有選項,字母表的第一個字母將爲[1]依此類推)。 – Nicolas 2014-09-04 14:21:25
您可以使用array_filter($ b)刪除數組中的空值。 – 2014-09-04 14:25:32
然後,如果你的陣列像你在上面的評論中說的那樣,你總是會使用$ b [0] – 2014-09-04 14:28:06