foreach php-smarty帮助

时间:2011-09-10 11:50:45

标签: php foreach smarty

我的php脚本如下:

$sql = "
        SELECT
            *
        FROM
            tbl_messages
        WHERE
            msg_sender_id = '$this->UM_index'
    ";
    $res = $this->db->returnArrayOfObject($sql);
    $this->assign_values('sent_messages',$res);

在我检索的模板中:

{foreach name = feach key = indx item = k from = $sent_messages}
{$k->msg_sender_id}
{$k->msg_subject}
{/forach}

我可以检索以上两个字段。但我想检索字段message_sender_name的{​​{1}},可以从函数sender_id中获取。

我的问题是如何将getDetails($id)字段(这是一个数组)分配给我的智能模板?

1 个答案:

答案 0 :(得分:1)

所以你也希望能够拥有message_sender_name,函数getDetails($ id)返回?

您必须循环播放结果,并为每一行获取message_sender_name。像这样:

$arrResults = array();
while ($res = $this->db->returnArrayOfObject($sql)))
{
  $res['msg_sender_name'] = getDetails($res['msg_sender_id']);
  $arrResults[] = $res;
}
$this->assign_values('sent_messages',$arrResults);

如果我是对的,您现在可以通过模板文件中的{$k->msg_sender_name}访问sender_name。

但我建议您在SQL语句中使用JOIN,这样就不必再发送一个sender_name请求。