wordpress数据按相应顺序序列化

时间:2014-09-10 14:40:48

标签: php arrays wordpress serialization

在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

那么有人可以告诉我该怎么做吗?

1 个答案:

答案 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>