2014-11-06 86 views
1

我很難讀取一些從joomla 2.5獲得的數據。首先,我創建了一個將數據作爲json存儲在數據庫中的模塊。所以第一i-從DB林克讀:如何從包含他內部對象的數組中讀取數據

$db = JFactory::getDbo(); 


$query = $db->getQuery(true); 

$query->select($db->quoteName(array('params'))); 
$query->from($db->quoteName('#__modules')); 
$query->where($db->quoteName('module') . ' = '. $db->quote('mod_products')); 


// Reset the query using our newly populated query object. 
$db->setQuery($query); 

// Load the results as a list of stdClass objects (see later for more options on retrieving data). 
$results = $db->loadObjectList(); 

並且我得到作爲包含對象的陣列中的結果,並且每個對象具有JSON數據。下面 是我從查詢得到arrray:

Array 
(
    [0] => stdClass Object 
    (
    [params] => { 
    "product_name":"Sangiovese", 
    "product_subtitle":"Maremma Toscana DOC", 
    "product_category":"Red", 
    "isvisible":"1" 
     } 
) 
[1] => stdClass Object 
    ( 
    [params] => { 
    "product_name":"Syrah", 
    "product_subtitle":"Maremma Toscana DOC", 
    "product_category":"Red", 
    "isvisible":"0", 
     } 
) 
[2] => stdClass Object 
    ( 
    [params] => { 
    "product_name":"Merlot", 
    "product_subtitle":"Maremma Toscana DOC", 
    "product_category":"Red", 
    "isvisible":"0" 
     } 
) 
[3] => stdClass Object 
    ( 
    [params] => { 
    "product_name":"Vermentino", 
    "product_subtitle":"Maremma Toscana DOC", 
    "product_category":"White", 
    "isvisible":"0" 
     } 
) 
); 

所以我想要做的就是給每個PARAM中訪問數據examle:

PS:數組名是$結果。 , EX:我想要訪問產品名稱該陣列上的每個產品或字幕等。

所以我做了這樣的事情,但它不工作,我知道我沒有做對,但我希望有人可以幫助我,我真的appruciate它。

foreach($results as $result) 
    { 

     echo $result->prams->product_name; 
} 

錯誤時,該代碼被執行,顯示:

注意:試圖讓非對象的財產

我真的很需要這方面的一些建議。

謝謝!

+1

它因爲'params'不是一個對象,它是一串JSON數據,你需要解碼它,然後纔可以訪問它的基於數據的數據 – 2014-11-06 17:07:20

回答

0

列表中的所有項目都是一個對象:

[0] => stdClass Object 
[1] => stdClass Object 

而且每個對象都有一個params屬性,它是包含JSON數據的字符串。

您需要使用json_decode內置函數將JSON字符串轉換爲對象或數組。

試試這個辦法:

$paramsDecoded = json_decode($result->params, true); 
print $paramsDecoded['product_name']; 
0

您好,感謝所有誰幫助,

我設法使它的功能。

所以我會在這裏發佈所有其他人通過相同的水域和需要幫助的代碼。

$db = JFactory::getDbo(); 

$query = $db->getQuery(true); 

$query->select($db->quoteName(array('params'))); 
$query->from($db->quoteName('#__modules')); 
$query->where($db->quoteName('module') . ' = '. $db->quote('mod_products') .' AND '. $db->quoteName('language') . ' <> '. $db->quote('en-GB')); 

// Reset the query using our newly populated query object. 
$db->setQuery($query); 

// Load the results as a list of stdClass objects (see later for more options on retrieving data). 
$results = $db->loadObjectList(); 

$count = count($results); 

我做了什麼讓我需要的功能:

for ($i=0; $i < $count; $i++) { 
    $json = $results[$i]->params; 
    $product = json_decode($json); 

    // code here, example 
    echo $product->product_subtitle; 

} 

所以,是的。在使用代碼的其他部分之前,我需要先使用json_decode進行解碼。

感謝您的幫助。希望這篇文章能夠幫助其他與我相同的開發人員在Joomla操縱存儲在數據庫中的對象時遇到困難。

相關問題