2017-09-23 88 views
-2

我有一個CMS我正在使用的序列化數據庫中的數據。我使用unserialize()函數將數據轉換爲關聯數組。現在我有一個很難從關聯數組拉動形象價值:我怎樣才能得到在這個關聯數組中的鍵值

這是一個簡單的while循環,我通過行使用循環:

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

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

} 

這是鍵和值陣列的我需要得到的值,所以可正確縮略圖圖像分配給尊重人:

[「1x_filename」] =>串(19)「00/83/83-設置-1X。 jpg「

整個陣列在下面,我的目標鎖定位置在更多om此陣列:

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" 
     } 
    } 
} 

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

+1

其添加爲像這樣的代碼很難看到任何東西 –

+0

按鈕可以通過用四個空格縮進來自動格式化這樣的東西。 – tadman

+0

**警告**:如果您只是在學習PHP,請不要學習過時的['mysql_query'](http://php.net/manual/en/function.mysql-query.php)界面。這很糟糕,並且已經在PHP 7中被刪除了。像[PDO不是很難學的東西](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-php-pdo- for-database-access /)以及[PHP The Right Way](http://www.phptherightway.com/)等指南有助於解釋最佳實踐。確保**你的用戶參數[妥善轉義](http://bobby-tables.com/php),否則你將以嚴重的[SQL注入漏洞](http://bobby-tables.com/ )。 – tadman

回答

0

就像這樣:

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

picturePath將包含圖片的路徑

+0

你釘了兄弟,謝謝! 17從哪裏來? – SuperKenCodes

+0

@SuperKenCodes 17位於陣列中。很難說它是什麼。我假設它是某種用戶ID或可能爲您的數據聲明一個版本。你的數組在你的情況下有16和17,其餘的數據保存在下面。 – natheriel

0

我會建議你使用的mysqli或在PHP中的其他數據庫適配器,因爲mysql_功能depricated甚至永遠不會被刪除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']; 

} 
相關問題