我使用函数serialize()
插入数据库值(数组),如何在标记unserialize()
中使用<ul><li>...
回显它们?
我在数据库中有这个:a:6:{i:0;s:15:"Coffee";i:1;s:14:"Satellite";i:2;s:11:"Game Notes";i:3;s:14:"Internet";i:4;s:10:"Pool";i:5;s:0:"";}
LIKE:
- 咖啡
- 游戏笔记
- 因特网
- 池
答案 0 :(得分:2)
如您所说,您需要使用unserialize()
循环,如下所示:
foreach()
这将回显包含$arr = unserialize($dbString);
echo "<ul>";
foreach($arr as $key => $val)
{
echo "<li>$val</li>";
}
echo "</ul>";
的列表,因为value
遍历foreach()
d数组,正如您在问题中指定的那样。
unserialize()
是$key => $part
的锦上添花;如果你想获得数组键,只需引用foreach()
。如果您需要该密钥的数据,请使用$key
。
如果你想只回显一个元素(你的例子是$val
),就不要使用循环并按键引用它(整数):
Internet
这个$arr = unserialize($dbString);
echo $arr[2];
是数组中第三个元素。
答案 1 :(得分:0)
对数据进行反序列化并将其循环打印出来。请注意,我还添加了检查,以确定我们正在返回一个数组,并且它在循环之前包含一些内容。
$data = unserialize($row['like']);
if(is_array($data) and count($data)) {
echo '<ul>';
foreach($like as $value) {
echo '<li>' . $value . '</li>';
}
echo '</ul>';
}
我认为这就是你要求的。仅在其Internet
。
$data = unserialize($row['like']);
if(is_array($data) and count($data)) {
echo '<ul>';
foreach($like as $value) {
if('Internet' != $value) {
continue;
}
echo '<li>' . $value . '</li>';
}
echo '</ul>';
}
如果可以,我会停止使用序列化并使用json_encode代替。在更多编程语言中编码和解码更容易,如果您需要直接更新数据库,人工编辑更容易。