0

我写下我的php代码:

<?php
        // 已有指定 material, 顯示 material 資訊
        if (strlen($m_id) > 0) {
            // 此 material 屬於哪些 mgroup
            $group_info = $mUtil->groupInfo($m_id);
            $group_names = array();
            foreach ($group_info as $mg_id => $row) {
                if (!$row["not_in_group"]) {
                    $group_names[] = $row["mg_name"];
                }
            }
        }
    ?>

  <table width="100%">
    <tr>
      <th colspan="2"><?php echo $m_name; ?></th>
    </tr>
    <tr class="odd">
      <th>Formula</th>
      <td width="80%"><?php echo $formula; ?></td>
    </tr>
    <tr class="odd">
      <th>Alias</th>
      <td><?php echo $alias; ?></td>
    </tr>
    <tr class="odd">
      <th>In groups</th>
      <!-- join() == implode() -->
      <td><?php echo join($group_names, ",&nbsp; "); ?></td>
    </tr>
  </table><br /><br />

但我收到这些错误消息:

Notice: Undefined variable: group_names in eval() (line 97 of D:\xampp\htdocs\drupal\modules\php\php.module(80) : eval()'d code).
Warning: join() [function.join]: Invalid arguments passed in eval() (line 97 of D:\xampp\htdocs\drupal\modules\php\php.module(80) : eval()'d code).
Notice: Undefined variable: group_names in eval() (line 97 of D:\xampp\htdocs\drupal\modules\php\php.module(80) : eval()'d code).
Warning: join() [function.join]: Invalid arguments passed in eval() (line 97 of D:\xampp\htdocs\drupal\modules\php\php.module(80) : eval()'d code).

任何人都可以帮助我吗?非常感谢....

4

3 回答 3

2

未定义的错误是由于变量像$group_names只定义一次

if (strlen($m_id) > 0) { ... } //condition is true.

确保您使用的变量在使用之前已实例化。

使用isset($instancename)可能是解决此问题的方法之一。

例子:

if(!isset($group_names)) $group_names = array();
// ^ if $group_names is not found then at least initialize it as an empty array
//   so that the rest of the script can go easy

此外,join()需要胶水来加入阵列,但顺序不正确。

<?php echo join(", ", $group_names); ?>

注意:eval()但是,不鼓励使用

于 2012-04-24T09:17:16.250 回答
1

您对 join 函数的参数不正确,请在此处阅读http://php.net/manual/en/function.join.php

于 2012-04-24T09:14:48.197 回答
1

如果条件strlen($m_id) > 0false$group_names不会被初始化。但是,稍后您将无条件地使用它:

<td><?php echo join($group_names, ",&nbsp; "); ?></td>

解决方案:将初始化移到$group_names = array()条件之外。

除此之外,您的参数顺序错误join(您应该切换它们)。

于 2012-04-24T09:15:30.880 回答