wordpress show以智能方式反序列化数据

时间:2014-09-10 13:12:04

标签: php wordpress serialization

在wordpress中,我将数据存储在数据库中作为序列化方法。现在我已经在数组中获取了数据。所以代码就像这样

global $wpdb;
 $results = wpdb->get_results("SELECT * FROM `table` where `id` = 3");
 foreach($results as $result) {
    echo '<pre>';
        print_r($result);
    echo '</pre>';
 }

这个给我这样的数据

Array
(
    [0] => stdClass Object
        (
            [id] => 1
            [title] => a:3:{i:1;s:8:"test1";i:2;s:8:"test2";i:0;s:0:"test3";}
            [page] => a:3:{i:1;s:3:"dsa";i:2;s:4:"dsds";i:0;s:0:"sdvdsvds";}
        )

)

现在我想计算值并希望显示列表中的所有值。在这里你可以看到我有3个标题和页面值。所以我把冠军作为反击。所以我这样做了

foreach($results as $result) {
    $count = count(unserialize($result->title)); // This gave 3
    for( $i = 0; $i<$count; $i++ ) {
        echo '<li></li>'; // This gave me 3 li's that I wanted
    }
 }

现在要获取标题和页面的所有值,我需要再次使用foreach和unserialize方法。那么有人可以告诉我在这里显示标题和单词数据的好方法和智能方法(在li里面)。任何建议和帮助都会非常明显。

1 个答案:

答案 0 :(得分:1)

您似乎只有90%的方式,您只需要显示数据。

global $wpdb;
$results = wpdb->get_results( "SELECT * FROM `table` where `id` = 3" );

foreach( $results as $result ) {
    $titles = unserialize($result->title); 
    foreach( $titles as $title ) { // Loop through it
        echo '<li>'. $title ."</li>\n"; 
    }
}

我已将您的号召移至count,就好像它只是用来计算时间循环然后您不会需要它。您可以使用foreach循环遍历数组中的所有项目。

我在每\n之后添加了换行符(</li>),这只是为了让生成的标记更具可读性。

我还在每个左括号后添加了空格,在每次结束之前,这都符合WordPress编码标准。