Php 在mysql while循环中解析序列化数据

Php 在mysql while循环中解析序列化数据,php,mysql,arrays,serialization,Php,Mysql,Arrays,Serialization,我正试图解析wp_postemta表中的WordPress meta_value列 meta_值行内容采用如下序列化格式: a:1:{i:0;O:8:"stdClass":2:{s:5:"notes";s:0:"";s:12:"applications";a:5: {s:4:"Year";O:8:"stdClass":2: {s:4:"name";s:4:"Year";s:5:"value";s:4:"2006";}s:4:"Make";O:8:"stdClass":2: {s:4:"name"

我正试图解析wp_postemta表中的WordPress meta_value列

meta_值行内容采用如下序列化格式:

a:1:{i:0;O:8:"stdClass":2:{s:5:"notes";s:0:"";s:12:"applications";a:5:
{s:4:"Year";O:8:"stdClass":2:
{s:4:"name";s:4:"Year";s:5:"value";s:4:"2006";}s:4:"Make";O:8:"stdClass":2:
{s:4:"name";s:4:"Make";s:5:"value";s:5:"Isuzu";}s:5:"Model";O:8:"stdClass":2:
{s:4:"name";s:5:"Model";s:5:"value";s:5:"i-280";}s:4:"Trim";O:8:"stdClass":2:
{s:4:"name";s:4:"Trim";s:5:"value";s:31:"Base Extended Cab Pickup 2-Door";}s:6:"Engine";O:8:"stdClass":2:
{s:4:"name";s:6:"Engine";s:5:"value";s:54:"2.8L 2770CC 169Cu. In. l4 GAS DOHC Naturally Aspirated";}}}}
我能够使用while循环来取消序列化数据

$results = $mysqli->query("SELECT meta_value
           FROM wp_postmeta
           WHERE meta_key = '_ebay_item_compatibility_list';");

while($row = $results->fetch_array()) {
echo '<pre>';
print_r(unserialize($row['meta_value']));
echo '</pre>';
                                      }
我要做的是访问所有的值元素

意思是$year=['year']['value']$make=['make']['value'];等等


在while循环中如何访问这些值元素?

您有stdClass对象和数组的组合,因此对于通常使用[]的数组和对象的属性->

例如:

while($row = $results->fetch_array()) {
        $foo = unserialize($row['meta_value']);
        foreach ( $foo as $f) {
            foreach ( $f->applications as $application) {
                echo $application->value;
            }
        }
}
}

编辑: 如果一行中有更多数组元素,则可以使用foreach


谢谢[0]有点混乱,但它返回了所有结果。我喜欢它,谢谢。更容易理解和掌握。您还可以使用foreach for Application array
while($row = $results->fetch_array()) {
    $foo = unserialize($row['meta_value']);
    $foo[0]->applications['Make']->value;
while($row = $results->fetch_array()) {
        $foo = unserialize($row['meta_value']);
        foreach ( $foo as $f) {
            foreach ( $f->applications as $application) {
                echo $application->value;
            }
        }
}