【问题标题】:Extract data from serialized array and output into PHP [duplicate]从序列化数组中提取数据并输出到 PHP [重复]
【发布时间】:2017-09-01 20:23:23
【问题描述】:

我有这个:

            case 'Bulk Discount':
            $postMeta = get_post_meta($product->ID, 'o-discount');
            echo $postMeta[0];
            break;

'o-discount' 是一个返回的 post_meta:

'a:4:{s:6:"enable";s:1:"1";s:4:"type";s:10:"percentage";s:10:"rules-type";s:9:"intervals";s:5:"rules";a:1:{i:0;a:3:{s:3:"min";s:1:"3";s:3:"max";s:0:"";s:8:"discount";s:1:"5";}}}'

我想从序列化数组中回显数据,以便显示它。

更新:

我尝试对上面的数组使用反序列化,但它不返回任何结果。当我使用下面找到的示例时,它会返回“Manufactured in” - “Canada”结果。

$mydata = 'a:5:{s:9:"engine_id";a:1:
{i:0;s:9:"300000225";}s:15:"transmission_id";a:1:
{i:0;s:6:"257691";}s:5:"plant";a:1:{i:0;s:23:"Oshawa, Ontario, 
Canada";}s:15:"Manufactured in";a:1:{i:0;s:6:"CANADA";}s:22:"Production 
Seq. Number";a:1:{i:0;s:6:"151411";}}';
$mydata = unserialize($mydata);
echo $mydata['Manufactured in'][0];

【问题讨论】:

  • 请在原帖中查看我上面的更新。
  • 您在 $mydata 字符串定义的末尾缺少右花括号。
  • 对不起,我不确定我明白你的意思。
  • 对不起,实际上你的字符串很好,但你需要从中删除新的换行符(它应该是一行)

标签: php arrays serialization


【解决方案1】:

看起来您只是试图访问错误的数组键...

$mydata = 'a:4:{s:6:"enable";s:1:"1";s:4:"type";s:10:"percentage";s:10:"rules-type";s:9:"intervals";s:5:"rules";a:1:{i:0;a:3:{s:3:"min";s:1:"3";s:3:"max";s:0:"";s:8:"discount";s:1:"5";}}}';

$mydata = unserialize($mydata);

print_r($mydata); // See the structure

echo $mydata['rules'][0]['discount']; // 5

结果:https://eval.in/853921

【讨论】:

  • 这行得通,谢谢。我遇到的另一个问题是从帖子 ID 中获取序列化数组,因此它特定于每个项目。当我使用 '$postMeta = get_post_meta($product->ID, 'o-discount');'它不返回任何东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 2016-09-15
相关资源
最近更新 更多