2014-12-06 154 views
1

假设我有以下数据:Retrive特定领域

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); 

} 

我不能这样做,简单的事情。请帮助我。

+0

这不是JSON,这是序列化的数据!你想在Layman的条件下做什么? – 2014-12-06 09:27:38

+0

我想从中得到月份和日期。 – Twix 2014-12-06 09:31:28

+0

这不是一个JSON字符串它的序列化的字符串,你需要使用'unserialize()' – 2014-12-06 09:41:40

回答

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 -loop

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

@Twix这个答案对你有帮助吗? – pbaldauf 2014-12-06 10:10:13