在wordpress中,我将数据存储为序列化方法,标题为第1行,名为title [1],第2行为title [2],第3行为title [3],依此类推。对于所有字段(名称,电话),此方法都相同。现在将数据存储为序列化后,我想获取数据。所以要获取我有这样的脚本
$results = $wpdb->get_results("SELECT * FROM `table` where `id` = 4");
现在我在做print_r($ results);我得到了这样的结果
Array
(
[0] => stdClass Object
(
[id] => 4
[title] => a:3:{i:1;s:8:"title1";i:2;s:8:"title2";i:0;s:0:"title3";}
[name] => a:3:{i:1;s:8:"name1";i:2;s:8:"name2";i:0;s:0:"name3";}
[phone] => a:3:{i:1;s:8:"123";i:2;s:8:"324";i:0;s:0:"648";}
)
)
使用我使用过的unserilize和foreach这样的数据
foreach($results as $result) {
$titles = unserialize($result->title);
$names = unserialize($result->name);
$phones = unserialize($result->phone);
foreach($titles as $title) {
echo $title;
}
}
但这没有意义,因为我希望同一行的所有属性如(id,title,name,phone)对于第一行意味着它应该显示第一个元素的所有值。所以数据应该显示为这样
Id Title Name Phone
4 title1 name1 123
4 title2 name2 324
4 title3 name3 648
那么有人可以告诉我该怎么做吗?
答案 0 :(得分:0)
这假设每个数组中的项目数相同。该ID也不可用。
<table>
<thead>
<tr>
<th>ID</td>
<th>Title</th>
<th>Name</th>
<th>Phone</th>
</tr>
</thead>
<tbody>
<?php
foreach($results as $result) {
$titles = unserialize($result->title);
$names = unserialize($result->name);
$phones = unserialize($result->phone);
$i=0;
foreach($titles as $title) {
echo "<tr>\n";
echo " <td>4</td>\n"; // This isn't in your serialized data. I'll let you work out where it comes from.
echo ' <td>'. $titles[$i] .'</td>'. "\n";
echo ' <td>'. $names[$i] .'</td>'. "\n";
echo ' <td>'. $phones[$i] .'</td>'. "\n";
echo "</tr>\n";
$i++;
}
}
?>
</tbody>
</table>