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)することは、これに対処する方法の 1 つです。

例:

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 に答える