php – 布尔值和整数是序列化后的字符串
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 布尔值和整数是序列化后的字符串,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1387字,纯文字阅读大概需要2分钟。
内容图文
![php – 布尔值和整数是序列化后的字符串](/upload/InfoBanner/zyjiaocheng/817/a1857fb65e724a2a84135fc6f80b7470.jpg)
我正在使用WordPress update_post_meta来保存数组
$obj = array(
'array' => array(1, 'zwei', !!3),
'string' => 'abc',
'bool' => true,
'bool2' => false,
'integer' => 1,
'integer2' => 17
);
update_post_meta($post_ID, 'my-key', $obj);
但是,如果我检查原始字段,我得到
a:6:{s:5:"array";a:3:{i:0;i:1;i:1;s:4:"zwei";i:2;s:1:"1";}s:6:"string";s:3:"abc";s:4:"bool";s:1:"1";s:5:"bool2";s:1:"0";s:7:"integer";i:1;s:8:"integer2";i:17;}
虽然它应该是
a:6:{s:5:"array";a:3:{i:0;i:1;i:1;s:4:"zwei";i:2;b:1;}s:6:"string";s:3:"abc";s:4:"bool";b:1;s:5:"bool2";b:0;s:7:"integer";i:1;s:8:"integer2";i:17;}
您可能会注意到所有布尔值都存储为字符串(b:1 = s:1:“1”)
问题仅出现在某些WordPress安装上,而不是每个安装.我还检查了正常工作的serialize功能(返回b:1)
get_post_meta($post_ID, 'my-key', true);
并使用is_bool签入值返回false(显然)
编辑:刚注意到整数也保存为字符串
解决方法:
update_post_meta使用update_metadata你可以在该函数中找到它的代码here如果你看一下at line 119,你会看到meta_value传递给wp_unslash,返回值是一个字符串(更改数据类型的函数是stripslashes_deep)
作为一种解决方法,您可以在将值传递到update_post_meta()之前将其值设为serialize
编辑:
发现问题:在3.6.0之前,update_metadata有第117行这个代码:
$meta_key = stripslashes($meta_key)
stripslashes是一个返回字符串的php函数.
截至3.6.0该行看起来像:
$meta_key = wp_unslash($meta_key);
striplashes只有字符串类型meta_keys.
对wordpress 3.6.0或更高版本的更新将解决该问题.
内容总结
以上是互联网集市为您收集整理的php – 布尔值和整数是序列化后的字符串全部内容,希望文章能够帮你解决php – 布尔值和整数是序列化后的字符串所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。