WordPress中如何访问用户自定义字段返回的序列化字符串中的值
解决方法
你拿到的a:2:{i:0;s:9:"paybphone";i:1;s:3:"ips";}是PHP的序列化字符串,是PHP用来把数组、对象等复杂数据类型转为字符串存储的标准格式,无需用JSON相关函数处理,直接用unserialize()函数即可还原为原数组访问。
代码示例
function abc(){ $current_user = wp_get_current_user(); // 获取api字段值,第三个参数传true直接返回单条数据,无需额外取[0] $api_data = get_user_meta($current_user->ID, 'api', true); // 反序列化得到原始数组 $api_arr = unserialize($api_data); // 按索引访问对应值 // 取i=0对应的值 echo $api_arr[0]; // 输出 paybphone // 取i=1对应的值 echo $api_arr[1]; // 输出 ips } add_action('init', 'abc');
优化建议
- 可以增加异常判断,避免数据异常导致报错:
function abc(){ $current_user = wp_get_current_user(); $api_data = get_user_meta($current_user->ID, 'api', true); $api_arr = []; // 判断是否为合法序列化数据 if(is_serialized($api_data)){ $api_arr = unserialize($api_data); } // 访问前先判断索引是否存在 if(isset($api_arr[0])){ echo $api_arr[0]; } } add_action('init', 'abc');
- 如果你当初存储
api自定义字段时直接传入的是数组类型,WordPress底层会自动完成序列化、反序列化操作,你无需手动调用unserialize(),直接把get_user_meta($current_user->ID, 'api', true)的返回值当做数组访问即可。
内容的提问来源于stack exchange,提问作者Sandesh Veerani
相关产品推荐
相关产品推荐

