从序列化数据中检索特定字段

时间:2014-12-06 09:24:02

标签: mysql wordpress

假设我有以下数据:

a:1:{s:4:"date";a:3:{s:2:"mm";s:2:"12";s:2:"dd";s:2:"06";s:2:"yy";s:4:"1991";}}

我想要来自该序列化字符串的mmdd的值。

我有以下查询来检索上述数据:

$birthday = "select meta_key, meta_value from $wpdb->usermeta where meta_key='pie_date_5'";

$user_birthday = $wpdb->get_results($birthday);

foreach($user_birthday as $ubday){
    $ubd = $ubday->meta_value; echo $ubd;
    echo json_decode($ubd[0]->mm);

}

我无法做那么简单的事情。请帮帮我。

1 个答案:

答案 0 :(得分:1)

您必须使用unserialize代替json_decode,因为它是序列化字符串
所以你可以尝试这样的事情:

$user_birthday = 'a:1:{s:4:"date";a:3:{s:2:"mm";s:2:"12";s:2:"dd";s:2:"06";s:2:"yy";s:4:"1991";}}'; //the serialized string you get from your query

$upday = unserialize( $user_birthday );


echo $upday['date']['mm'] . PHP_EOL;
echo $upday['date']['dd'];


编辑:如果您想从$upday数组中读取所有属性,可以使用foreach - 循环

foreach ( $upday['date'] as $key => $value ) :
    echo $key . ' = ' . $value . PHP_EOL;
endforeach;