我很难读懂从joomla 2.5获得的一些数据。首先,我创建了一个模块,将数据作为json存储在DB上。所以首先我从DB linke上读到:
$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"
}
)
);
所以我想要做的是访问每个参数中的数据以供检查:
PS:数组名称是$ results。 , EX:我想访问此阵列或副标题等每个产品的 product_name 。
所以我做了这样的事情,但是它不起作用,我知道我做得不对,但我希望有人可以帮助我,我会真的适合它。
foreach( $results as $result )
{
echo $result->prams->product_name;
}
显示此代码执行时的错误:
注意:尝试在
中获取非对象的属性我真的需要一些建议。
谢谢!
答案 0 :(得分:0)
列表中的每个项目都是一个对象:
[0] => stdClass Object
[1] => stdClass Object
每个对象都有一个params
属性,这是一个包含JSON数据的字符串。
您需要使用json_decode内置函数将JSON字符串转换为对象或数组。
尝试这种方法:
$paramsDecoded = json_decode($result->params, true);
print $paramsDecoded['product_name'];
答案 1 :(得分: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操作存储在数据库中的对象的方式会遇到困难。