这已经在过去的5小时,我难倒。 试过最可笑的功能,试图修复它,但无济于事。
我从WP数据库中检索数据。 数据已,插入之前,有1个阵列使用串行化serialize()
从PHP功能。 然后,它被使用WP功能插入到WP数据库update_user_meta
。 这个函数的引用说:
$meta_value
(mixed) (required) The new desired value of the meta_key, which must be different from the
existing value. Arrays and objects will be automatically serialized.
Note that using objects may cause this bug to popup.
Default: None
这使我想到数据可能已系列化两次。 虽然通过了一大堆的功能,如要unserialize()
array_map
, json_decode
,以及它们的组合,更我现在已经得到了如下:
$i = 0;
while($i < count($fbData)){
$someValue = $fbData[$i]['meta_value'];
$usermeta = array_map( function( $a ){ return $a[0]; }, get_user_meta( $fbData[$i]['user_id'] ));
if( $usermeta['facebookmeta'] ){
$unserialized = unserialize( $usermeta['facebookmeta'] );
//other methods tried: unserialize( unserialize
// unserialize( json_decode(
// json_decode( unserialize( json_decode(
// json_decode( unserialize(
// unserialize( array_map(
// unserialize( array_map( json_decode
// whole lot others
var_dump( $unserialized );
}
$i++;
}
然而,这是行不通的。 这正好与$fbData
:
'facebookmeta' => string 's:668:"a:16:{s:2:"id";s:9:"123456";s:4:"name";s:12:"Henkie";s:10:"first_name";s:4 //and so on
这是结果:
string 'a:16:{s:2:"id";s:9:"123456";s:4:"name";s:12:"Henkie";s:10:"first_name";s:4: //and so on
由于可见它的结果,它只是删除了“ s:668:"
“从一开始,这表明这是一个668字符串并留下其余不变。
怎么会在反序列化不能正常工作?