如何在此关联数组中获取键的值

时间:2017-09-23 22:31:57

标签: php mysql

我有一个我正在使用的CMS,它在数据库中序列化他们的数据。我使用unserialize()函数将数据转换为关联数组。现在我很难从关联数组中提取图像的值:

这是我用来遍历行的简单while循环:

while($row = mysql_fetch_assoc($query_models)){

    $model_name = $row['ModelName'];
    $model_thumbnail = unserialize($row['info']);

}

这是我需要获取值的数组的键和值,因此我可以将正确的缩略图分配给受尊敬的人:

[" 1x_filename"] => string(19)" 00/83 / 83-set-1x.jpg"

完整数组位于下方,我定位的键位于此数组的底部:

array(1) { 
    ["thumbs"]=> array(2) { 
        [16]=> array(17) { 
            ["id"]=> string(2) "82" 
            ["1x_width"]=> string(3) "220" 
            ["1x_height"]=> string(3) "330" 
            ["2x_width"]=> string(3) "440" 
            ["2x_height"]=> string(3) "660" 
            ["3x_width"]=> string(3) "660" 
            ["3x_height"]=> string(3) "990" 
            ["4x_width"]=> string(3) "880" 
            ["4x_height"]=> string(4) "1320" 
            ["width"]=> string(3) "220" 
            ["height"]=> string(3) "330" 
            ["retinamode"]=> string(1) "1" 
            ["filename"]=> string(10) "82-set.jpg" 
            ["1x_filename"]=> string(19) "00/82/82-set-1x.jpg"
            ["2x_filename"]=> string(19) "00/82/82-set-2x.jpg"
            ["3x_filename"]=> string(19) "00/82/82-set-3x.jpg"
            ["4x_filename"]=> string(19) "00/82/82-set-4x.jpg" 
        } 
        [17]=> array(17) { 
            ["id"]=> string(2) "83" 
            ["1x_width"]=> string(3) "106" 
            ["1x_height"]=> string(3) "150" 
            ["2x_width"]=> string(3) "212" 
            ["2x_height"]=> string(3) "300" 
            ["3x_width"]=> string(3) "318" 
            ["3x_height"]=> string(3) "450" 
            ["4x_width"]=> string(3) "424" 
            ["4x_height"]=> string(3) "600" 
            ["width"]=> string(3) "106" 
            ["height"]=> string(3) "150" 
            ["retinamode"]=> string(1) "1" 
            ["filename"]=> string(10) "83-set.jpg" 
            ["1x_filename"]=> string(19) "00/83/83-set-1x.jpg" 
            ["2x_filename"]=> string(19) "00/83/83-set-2x.jpg" 
            ["3x_filename"]=> string(19) "00/83/83-set-3x.jpg" 
            ["4x_filename"]=> string(19) "00/83/83-set-4x.jpg"
        } 
    } 
}

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

就像这样:

$model_thumbnail = unserialize($row['info']);
$picturePath = $model_thumbnail['thumbs'][17]['1x_filename'];

picturePath将包含您的图片路径

答案 1 :(得分:0)

我建议你在php中使用mysqli或其他数据库适配器,因为mysql_函数被删除,甚至在从不php版本中删除。但是根据你的代码,你可以简单地使用foreach循环来获取数据。

您的结果会返回某种数据组,我认为这些是用户ID或类似的东西。它也可能是版本或类似的东西。我不知道这有两种可能的方式

全部获取:

while($row = mysql_fetch_assoc($query_models)){

    $model_name = $row['ModelName'];
    $model_thumbnail = unserialize($row['info']);
    // echo all 1x_filename values from all given "ids"
    foreach ($model_thumbnail['thumbs'] as $model_id => $model_values) {
        print $model_values['1x_filename'];
    }

}

只获取最新的ID,以防出现某种版本:

while($row = mysql_fetch_assoc($query_models)){

    $model_name = $row['ModelName'];
    $model_thumbnail = unserialize($row['info']);

    // sort array, so highest ID (assume-ably the newest)
    krsort($model_thumbnail['thumbs']);

    // get array entry
    $firstEntry = reset($model_thumbnail['thumbs']);
    print  $firstEntry['1x_filename'];

}