Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从包含对象的数组中读取数据_Php_Arrays_Json_Object - Fatal编程技术网

Php 如何从包含对象的数组中读取数据

Php 如何从包含对象的数组中读取数据,php,arrays,json,object,Php,Arrays,Json,Object,我很难阅读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(

我很难阅读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"
      } 
  ) 
);
因此,我要做的是访问examle的每个参数中的数据:

PS:数组名为$results。 , 例如:我想访问此阵列上每个产品的产品名称,或副标题等

所以我做了类似的事情,但它不起作用,我知道我做得不对,但我希望有人能帮助我,我会非常感激

foreach( $results as $result )
  { 

         echo $result->prams->product_name;
 }
执行此代码时显示的错误:

注意:尝试在中获取非对象的属性

我真的需要一些建议


谢谢大家!

列表中的每个项目都是一个对象:

[0] => stdClass Object
[1] => stdClass Object
每个对象都有一个params属性,它是一个包含JSON数据的字符串

您需要使用内置函数将JSON字符串转换为对象或数组

尝试以下方法:

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

大家好,感谢所有帮助过我的人

我设法使它发挥作用

因此,我将在这里发布所有其他人的代码,这些人都经过同样的水域,需要帮助

$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处理存储在数据库中的对象时遇到困难的开发人员。

因为params不是一个对象,它是一个JSON数据字符串,所以您需要先对它进行解码,然后才能基于密钥访问它的数据