我写下我的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, ", "); ?></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).
任何人都可以帮助我吗?非常感谢....
答案 0 :(得分: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()
答案 1 :(得分:1)
您对join函数的参数不正确,请在此处阅读http://php.net/manual/en/function.join.php
答案 2 :(得分:1)
如果条件strlen($m_id) > 0
为false
,则$group_names
将不会被初始化。但是,以后您无条件地使用它:
<td><?php echo join($group_names, ", "); ?></td>
解决方案:将初始化$group_names = array()
移出条件。
除此之外,join
的参数的顺序错误(您应该切换它们)。