【问题标题】:Cant find the Error in this Php piece of code在这段 PHP 代码中找不到错误
【发布时间】:2009-05-08 22:54:15
【问题描述】:

我在这段代码上遇到 T_String 错误,它在第二行 ($form['com...) 上说得更准确,我根本不明白为什么。

function _maxlength_comment_type_form_alter(&$form, $form_state, $form_id) {
    $form['comment']['comment_max_length'] = array(
     '#type' => 'select',
     '#title' => t('Maximum comment length'),
     '#default_value' => variable_get('comment_max_length_'. $form['#node_type'] -> type, 160),
     '#options'=> drupal_map_assoc(array(140,160,180,200)),
     '#description' => t('numero maximo de caracteres permitidos.'),
     '#weight' => -1,
     );

我将此代码添加到 Maxlength drupal 模块中。

【问题讨论】:

  • 您所写的是语法正确的 PHP 代码。如果我用 包装它,它在 PHP4 和 PHP5 中都没有语法错误。

标签: php drupal


【解决方案1】:

可能是这个部分:

'comment_max_length_'. $form['#node_type'] -> type

尝试去掉箭头周围的空格?


编辑 - 我不认为上面的代码实际上是一个问题,尽管我仍然建议删除空格作为样式问题,这样很明显你正在这样做:

'comment_max_length_'. ($form['#node_type']->type)

而不是这样:

('comment_max_length_' . $form['#node_type'])

您的代码有效且可在我的电脑上运行TM


另一个编辑:

确保$form['comment'] 也已定义。也许在函数的开头添加这个。

if (!isset($form['comment'])) $form['comment'] = array();

【讨论】:

  • 感谢语法提示伙计们,我还在学习 php (noobie),所以我可能会犯很多此类错误。顺便说一句,我发现了问题,它就在我发布的那个函数之后。我仍然需要更好地阅读解析错误。他们指责一行,但错误实际上在另一行?
  • 是的,问题通常出在它所说的那一行之前或之后。
【解决方案2】:

我可以看到两个问题,上面提到的一个 nickf,即箭头的任何一侧都不应该有空格:

'comment_max_length_'. $form['#node_type'] -> type

此外,它后面不应有逗号(因为它是数组中的最后一项):

'#weight' => -1,`

【讨论】:

  • 这实际上不是语法错误。它的风格很糟糕,IMO,但它仍然是有效的 PHP。
  • 多余的逗号无关紧要。我通常在我的代码中添加额外的逗号。这样,当我稍后向数组添加更多条目时,我不会忘记添加额外的逗号。此外,我的差异会更小。
  • 这通常不是问题,但是 IIRC(如果我错了,请随时纠正我),一些较旧的 PHP 实现在额外的逗号上会出错。不过,也许我只是在做梦:)
【解决方案3】:

如何将这个庞大的陈述分解成更小的陈述,以便更好地查明问题?

【讨论】:

  • 这很有帮助,我逐个函数取出函数,这样我就可以真正找到错误的位置
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 2017-12-24
相关资源
最近更新 更多