在drupal数组中使用foreach?

时间:2015-04-28 11:07:16

标签: php arrays drupal foreach

我想在Drupal 7模块中创建统计页面。但为此我实际上需要在foreach内进行array ..我认为这是不可能的,但我对此并不是百分之百确定。

这是我目前的代码(没有工作,连接错误等等。)

有没有人知道这是否可行,并且可以给出一些示例如何做到

我的代码:

$id = $_GET['id'];

$query = db_query('SELECT * FROM push_notifications_messages WHERE app_id = :app_id', array(':app_id' => $id));
$qCount = db_query('SELECT * FROM push_notifications_messages WHERE app_id = :app_id', array(':app_id' => $id))->rowCount();

$form['table'] = array(
'#theme' => 'table',
'#header' => array(t('Message'), t('Device'), t('Date')),
'#rows' => array(
    foreach($query as $result) {
      for($i = 1; $i <= $qCount; $i++) {
        echo "'r" . $i . "'" . => array(
            "'c1'" . => array(
                '#type' => 'textfield',
                '#title' => t('@message', array('@message' => $result['msg_message']))
              ),
            "'c2'" . => array(
                '#type' => 'textfield',
                '#title' => t('@device', array('@device' => $result['msg_device']))
              ),
          ),
      }
    }
  ),
);

提前致谢!!

2 个答案:

答案 0 :(得分:1)

只需从数组定义中提取foreach循环,然后像这样分配值:

<?php

    $form['table'] = array(
        '#theme' => 'table',
        '#header' => array(t('Message'), t('Device'), t('Date')),
        '#rows' => array(),
    );



    foreach($query as $result) {
      for($i = 1; $i <= $qCount; $i++) {
        $form['table']["#rows"]["'r$i'"] = array(
            "'c1'" => array(
                '#type' => 'textfield',
                '#title' => t('@message', array('@message' => $result['msg_message']))
              ),
            "'c2'" => array(
                '#type' => 'textfield',
                '#title' => t('@device', array('@device' => $result['msg_device']))
              ),
          );
      }
    }

?>

答案 1 :(得分:0)

你不应该在drupal表单构建器代码中使用echo,foreach类型的PHP代码。在不发表任何评论的情况下,我想与您分享this。希望它能比你更好地帮助你。