php - wordpress 以智能方式显示反序列化数据

标签 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 和反序列化方法。那么有人可以告诉我什么是在此处(在 li 内部)显示标题和单词数据的好方法和智能方法吗?任何建议和帮助都将非常感激。

最佳答案

您似乎已经完成了 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 编码标准。

关于php - wordpress 以智能方式显示反序列化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25766378/

相关文章:

serialization - Scala序列化

php - 如何将 html 元素值提交给其在 Kohana 中的相应 Controller

php - Laravel Eloquent 嵌套关系仅返回第一个元素的数据

php - 在 wordpress 中链接到页面的正确方法

javascript - 将递增的类与不同循环中递增的 id 进行匹配 [jQuery/Wordpress]

android - 从文件中读取对象会抛出 IllegalAccessException

Scala 反序列化 : class not found

php - 如何调整 jquery.simply-scroll 插件的 CSS 设置以占据全屏

php - 在 PHP 中将对象转换为数组的最快方法是什么?

php - 解析错误: syntax error, unexpected T_OBJECT_OPERATOR, expecting ')' [closed]