【问题标题】:Array unserialize issue returning null/false数组反序列化问题返回 null/false
【发布时间】:2015-05-31 19:47:19
【问题描述】:

我有一个以这种格式返回的数组:

a:1:{i:0;i:305;}

我似乎无法通过unserialize() 它访问305。有人知道我能做什么吗?

在 WordPress 中查询:

$order_id = $wpdb->get_row("SELECT meta_value FROM wp_postmeta WHERE post_id=" . $t->object_id . " AND meta_key='wpc_inv_order_id");

我尝试使用:

$str = $order_id->meta_value;
$a = unserialize($str);
var_dump($a);
echo $a;

导致bool(false)

但是,似乎只是通过执行echo $order_id->meta_value;,它以某种方式取消了自己的序列化,现在给了我序列化数组中的 ID 值。

所以这样做:

$str = $order_id->meta_value;
echo $str;

我在上面得到输出305

感谢您的帮助!

【问题讨论】:

  • 我们能看到原始数组吗?
  • 我没有,我正在尝试编辑另一个用户的初始插件。 305 是我需要访问的另一个表中的一行的 ID。我会尝试找到它的输入位置。
  • 应该只是unserialize("a:1:{i:0;i:305;}")[0];
  • 看看我的回答。我做了
  • @splash58 是的,你是对的。

标签: php arrays serialization


【解决方案1】:

查看反序列化的结果是什么

$str = 'a:1:{i:0;i:305;}';
var_dump($a = unserialize($str));

array(1) {
  [0]=>
  int(305)
}

那就去$a[0];

【讨论】:

  • $str = $order_id['meta_value']; $a = unserialize($str); echo $a[0]; var_dump($a); 这是所有东西的 Bool(false)
  • @Jacob 结果是什么?
  • 每个案例的结果都是 bool(false)。
  • 哇...看来 echo $str 正在输出我需要的数字。
猜你喜欢
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-01
相关资源
最近更新 更多