首页 > 解决方案 > 获取序列化的 stdClass 值

问题描述

我有一个 SQL 查询:

$query = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS key_value FROM wp_customker WHERE ker_name = '1'");

如果我运行此查询,我将在序列化的 stdClass 中获得 176 个元素:

Array ( [0] => stdClass Object ( [key_value] => a:176:{i:0;s:10:"Ág utca ";i:1;s:14:"Aladár utca ";i:2; s:11:"Alag utca";i:3;s:14:"Alagút utca"...;}) )

我尝试将其转换为 Array 并 $array = json_decode(json_encode($query), true); 得到以下结果:

数组 ( [0] => 数组 ( [key_value] => a:176:{i:0;s:10:"Ág utca";i:1;s:14:"Aladár utca";i:2;s :11:"Alag utca"...;}))

我的问题是如何反序列化这些数据和循环echo中的所有字符串?foreach

标签: phpwordpressserializationdeserialization

解决方案


里面的数据key_value已经序列化,没有json编码

因此,例如,您可以这样做以获取原始数据

$serial_data   = $query[0]->key_value;
$unserial_data = unserialize($serial_data);

foreach ( $unserial_data as $key=>$val) {
    echo $key . ' = ' . $val;
}

推荐阅读