簡體   English   中英

如何獲取此關聯數組中鍵的值

[英]How can I get the value of a key in this associative array

我有一個 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"
        } 
    } 
}

任何幫助將不勝感激。 謝謝!

像這樣 :

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

圖片路徑將包含您的圖片路徑

我建議您在 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'];

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM