检查序列化数组

时间:2013-02-12 06:35:46

标签: php mysql wordpress

我必须从wordpress数据库中获取wp-options表,我必须取消序列化数据。我从数据库表中获取选项值的代码如下所示。

function option_value_change () {
  global $wpdb;
  $myrows = $wpdb->get_results( "SELECT *
  FROM `wp_options`");
    foreach ($myrows as $rows){
      $option = get_option($rows->option_name);
      modify_domain_name($option);
            echo $rows-> option_value ."<br />";
    }
}

现在我要检查序列数据。如何将数据作为序列化数据进行检查。如果是序列化数据,那么如何对数据进行反序列化。

2 个答案:

答案 0 :(得分:0)

也许检查它是对象还是数组,如果没有,则将其反序列化。

<?php
if (!is_array($var) && !is_object($var)) {
  $var = unserialize($var);
}
?>

或者,根据您的数据是对象/数组还是序列化数据,您还可以测试它是否为字符串。

<?php
if (is_string($var)) {
  $var = unserialize($var);
}
?>

答案 1 :(得分:0)

Wordpress有一个名为maybe_unserialize()的功能,适合您的工作。

顾名思义,该函数只有在序列化时才会反序列化。

修改

我不知道你当前的需求,但是如果你不知道,WordPress有一个get_option()函数,它从options表中读取一个值,如果需要,在返回之前反序列化它它给你。