我需要做一些我相信它很简单的事情,但是我在各处阅读和阅读信息并找不到解决方案。我知道,我是一个noob,但我真的不知道还有什么可以尝试的。反序列化从php获取的值php
有在我的网站的主题的PHP文件中的一个线,即是这样的:
global $post;
if (!is_page()) {$category_ID = get_post_meta($post->ID, '_category_permalink', true);}
else {$category_ID = '';}
$category_parent = pa_category_top_parent_id ($category_ID);
的事情是,在数据库上“_category_permalink的价值并不总是一个整数,我需要它。有时值是序列化值,像这样:
a:1:{s:8:"category";s:2:"23";}
所以,$ CATEGORY_ID有时为23(或任何其他数字),而其他时间是:1:{S:8: “类别”; s:2:“23”;}(以及其他值)。
我需要做的是可以检查的东西是在该行是一个整数之后获得的值。在这种情况下,我需要将其反序列化并将其转换为相应的整数,并存储在该序列化值的“类别”部分中(从我的示例中,数字23),因此$ category_ID将始终等于整数数字而不是序列化的值。
我该怎么办呢?
感谢提前:)
编辑& UPDATE:
这已经解决了,代码弄成这个样子
if (!is_page()) { $category_ID = get_post_meta($post->ID, '_category_permalink', true); } else {$category_ID = '';}
global $wpdb;
$catmeta = $wpdb->get_row("SELECT post_id, meta_key, meta_value FROM MYDATABASENAMEHERE WHERE post_id = '".$post->ID."' AND meta_key LIKE '_category_permalink'",ARRAY_A);
if(strpos($catmeta['meta_value'],':{')!==false){
$catmeta = unserialize($catmeta['meta_value']);
$catmeta['meta_value'] = $catmeta['category'];
}
$category_parent = pa_category_top_parent_id ($catmeta['meta_value']);
如果数字或不'is_numeric()来'你可以检查该值。 –