我最近创建了一个搜索功能,其复选框可以查询提交的复选框值,并将这些值返回到表中。 但问题是某些复选框值(在数据库中)是序列化的。当我在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>';
因此,为了显示数据库值的字符串,我尝试使用unserialize函数($ tmp就像存储查询结果的变量一样)。然而,有几个问题,即:
Array ( [0] => [1] => Netherlands )
。以下代码是我尝试反序列化数据的方式:
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>';
尽管如前所述,上面的代码显示了整个数组名称,同样查询的数据库的“普通”字符串显示为空白。
那么该如何解决这个问题呢?
提前谢谢
答案 0 :(得分:0)
Php unserialize可以返回几个东西,包括你的情况下的数组。这样做
foreach($tmp[$i] as $key=>$value){
echo "<td>";
$b=unserialize($value);
if(is_array($b)){
//this assumes your array is always like this Array ( [0] => [1] => Netherlands )
echo $b[1];
}
else{
echo $value;
}
echo "</td>";
}