Php drupal 7警告:isset中的偏移量类型非法或元素_info()中为空

Php drupal 7警告:isset中的偏移量类型非法或元素_info()中为空,php,drupal-7,draggable,roles,Php,Drupal 7,Draggable,Roles,我写的代码中包含了一个名为user的核心模块,即角色函数。 我的用户类型类似于用户角色。如果您简要查看user.admin.inc文件,您将了解我已根据以下内容替换了函数和变量: 用户角色=用户类型 角色=类型 rid=ut\U id 名称=ut\U标签 我所做的一切都与Core所做的一样,但我在我的页面中有一个警告:警告:isset中的偏移量类型非法,或者element_info中的偏移量类型为空 我已经检查了每一行,但我找不到原因和方法,我可以消失它 `function user_admin

我写的代码中包含了一个名为user的核心模块,即角色函数。 我的用户类型类似于用户角色。如果您简要查看user.admin.inc文件,您将了解我已根据以下内容替换了函数和变量:

用户角色=用户类型

角色=类型

rid=ut\U id

名称=ut\U标签

我所做的一切都与Core所做的一样,但我在我的页面中有一个警告:警告:isset中的偏移量类型非法,或者element_info中的偏移量类型为空

我已经检查了每一行,但我找不到原因和方法,我可以消失它

`function user_admin_types($form, $form_state) {
  $types = user_types();

  $form['types'] = array(
    '#tree' => TRUE,
  );

  $order = 0;
  foreach ($types as $ut_id => $ut_label) {
    $form['types'][$ut_id]['#type'] = (object) array(
      'ut_id'     => $ut_id,
      'ut_label'  => $ut_label,
      'ut_weight' => $order,
    );

  $form['types'][$ut_id]['#weight'] = $order;
  $form['types'][$ut_id]['weight'] = array(
    '#type'          => 'textfield',
    '#title'         => t('Weight for @title', array('@title' => $ut_label)),
    '#title_display' => 'invisible',
    '#size'          => 4,
    '#default_value' => $order,
    '#attributes'    => array('class' => array('type-weight')),
    );
    $order++;
  }

  $form['ut_label'] = array(
    '#type'          => 'textfield',
    '#title'         => t('User Type'),
    '#title_display' => 'invisible',
    '#size'          => 32,
    '#maxlength'     => 64,
  );

  $form['add'] = array(
    '#type'     => 'submit',
    '#value'    => t('Add type'),
    '#validate' => array('user_admin_type_validate'),
    '#submit'   => array('user_admin_type_submit'),
  );
  $form['actions'] = array('#type' => 'actions');
  $form['actions']['submit'] = array(
    '#type'   => 'submit',
    '#value'  => t('Save order'),
    '#submit' => array('user_admin_types_order_submit'),
  );

  return $form;
  }

/**
 * Form submit function. Update the type weights.
 */
function user_admin_types_order_submit($form, &$form_state) {
  foreach ($form_state['values']['types'] as $ut_id => $type_values) {
    $type = $form['types'][$ut_id]['#type'];
    $type->ut_weight = $type_values['weight'];
    user_type_save($type);
  }
  drupal_set_message(t('The type order have been updated.'));
}
function user_types() {
  $query = db_select('users_types', 'ut');
  $query->addTag('translatable');
  $query->fields('ut', array('ut_id', 'ut_label'));
  $query->orderBy('ut_weight');
  $query->orderBy('ut_label');
  $result = $query->execute();

  $types = array();
  foreach ($result as $key => $type) {
    switch ($type->ut_id) {
      // We only translate the built in type names
      case WEBNOVIN_CUSTOMER_UT_ID:
          $types[$type->ut_id] = t($type->ut_label);
        break;
      case WEBNOVIN_PREFERRED_CUSTOMER_UT_ID:
        $types[$type->ut_id] = t($type->ut_label);
        break;
      case WEBNOVIN_SALES_AGENT_UT_ID:
        $types[$type->ut_id] = t($type->ut_label);
        break;
      default:
        $types[$type->ut_id] = $type->ut_label;
    }
  }

  return $types;
}`

你能为我提供这段代码的输出吗$表单['types'][$ut\u id]['type']=对象数组在将对象强制转换为数组时,当值以整数开头,数组中的权重最终将是整数时,您可能会得到一些奇怪的结果。@Ryank objectstdClass541 3{[ut\u id]=>int1[ut\u label]=>string10客户[ut\u权重]=>int0}是result@Ryank我在这个表单上有一个主题和核心太一样了。此外,当我删除您提到的部分时,警告将消失。当您尝试使用对象或数组作为索引键访问数组索引时,会出现非法偏移类型错误!在这个错误中,它说的是什么行号和文件?因为元素_信息在脚本中不存在!只需查看user.admin.inc,就可以看到您正在尝试执行的操作,但需要更多的信息。@Ryank有人回答我:我怀疑问题在于您对角色/类型进行了全局搜索/替换,在第一次foreach中将角色更改为类型。类型用于向FAPI指示要添加的元素类型。这是真的。警告已经消失了