使用 foreach 循环从对象 stdClass 获取多个项目



我这里有我的代码,方法如下:

$db = DB::getInstance();
$templates = $db->get('templates', array('user_id', '=', 'username'));
$templates = $templates->results();
echo '<pre>', print_r($templates), '</pre>';

返回以下内容:

Array
(
    [0] => stdClass Object
        (
            [user_id] => username
            [template_id] => 2
            [template_name] => invoice1
            [template_description] => dear {{customer}},
            The {{item}} will cost {{price}}.
        )
    [1] => stdClass Object
        (
            [user_id] => username
            [template_id] => 3
            [template_name] => invoice2
            [template_description] => Dear {{customer}},
            You have selected {{package type}} service. Your {{item}} will cost {{price}}. 
        )

我可以使用 foreach 循环成功地从数组中获取一个template_description,如下所示:

foreach($templates[1] as $key=>$value){           
        $value;          
    } 

但是,我有多个template_descriptions我想得到,我不确定如何获得。我对foreach循环和对象不是很熟悉。

如果我从"$templates"中删除数字,则会出现错误:

Fatal error: Cannot use object of type stdClass as array in C:xampphtdocsemailtest.php on line 15

为什么只循环一个元素(第二个对象)?从foreach中删除[1]

foreach($templates[1] as $key=>$value){  
                  ^ Wrong way

这样做:

foreach($templates as $obj){           
         echo $obj->template_descrption;
    } 

你只需要从你的foreach中省略数组键,如下所示:

foreach($templates as $template){           
    echo $template->template_description;          
} 
foreach($templates as $template){
        foreach($template as $key=>$value){
                  echo $value;
         }
 }

最新更新