2014-09-10 51 views
0

在wordpress中,我將數據作爲序列化方法存儲在數據庫中。現在我已經獲取了數組中的數據。因此,代碼是這樣的wordpress以智能方式顯示反序列化數據

global $wpdb; 
$results = wpdb->get_results("SELECT * FROM `table` where `id` = 3"); 
foreach($results as $result) { 
    echo '<pre>'; 
     print_r($result); 
    echo '</pre>'; 
} 

這一個是讓我的數據是這樣

Array 
(
    [0] => stdClass Object 
     (
      [id] => 1 
      [title] => a:3:{i:1;s:8:"test1";i:2;s:8:"test2";i:0;s:0:"test3";} 
      [page] => a:3:{i:1;s:3:"dsa";i:2;s:4:"dsds";i:0;s:0:"sdvdsvds";} 
     ) 

) 

現在我想算值,並希望以顯示列出所有值。在這裏你可以看到我有3個標題和頁面的值。所以我拿冠軍作爲櫃檯。所以我做了這樣的

foreach($results as $result) { 
    $count = count(unserialize($result->title)); // This gave 3 
    for($i = 0; $i<$count; $i++) { 
     echo '<li></li>'; // This gave me 3 li's that I wanted 
    } 
} 

現在要獲得標題和頁面的所有值我需要再次foreach和反序列化的方法。那麼有人可以告訴我什麼是在這裏(裏面)顯示標題和單詞的數據的好方法。任何建議和幫助將非常可觀。

回答

1

你似乎是那裏的90%,你只需要顯示數據。

global $wpdb; 
$results = wpdb->get_results("SELECT * FROM `table` where `id` = 3"); 

foreach($results as $result) { 
    $titles = unserialize($result->title); 
    foreach($titles as $title) { // Loop through it 
     echo '<li>'. $title ."</li>\n"; 
    } 
} 

我已刪除您的來電count,彷彿它只是用來工作,如何可以通過多次循環,那麼你將不再需要它。您可以使用foreach循環來遍歷數組中的所有項目。

我在</li>之後加了一個換行符(\n),這只是爲了讓生成的標記更具可讀性。

我還在每個左括號之後添加空格,並且在每次關閉之前,這是與WordPress編碼標準內聯的。

+0

感謝您的回答。但有沒有更聰明的方式來顯示所有的數據。因爲通過做你的方法必須使用foreach循環爲每個數據,如標題,單詞等 – NewUser 2014-09-10 13:21:59

+0

如果你需要顯示它,這是最好的方法。如果你用少數幾行做它,那就不是問題。如果你要做到數百或數千行,那麼你需要解決你存儲數據的方式。無論哪種方式,這是最好的方法。 – Mike 2014-09-10 13:23:37

+0

是的,我一次在數據庫中以串行化方式存儲10行。它是一個很長的數據。所以我想要更聰明的方式。 – NewUser 2014-09-10 13:25:13