Hoy me he peleado con un formulario que tenía que generar "al vuelo" y me he encontrado con dos variantes de este error:
"warning: implode() [function.implode]: Bad arguments. in /includes/form.inc on line 622."
"warning: implode() [function.implode]: Invalid arguments. in /includes/form.inc on line 622."
El problema parece residir en que, cuando generas el formulario que tiene campos de tipo select o checkbox con drupal_render , no inserta todas las propiedades que requiere el modulo form y produce uno de los errores que podéis ver más arriba.
Buscando en drupal.org, he visto una solución a este problema, insertandole estas propiedades, en este caso al select, con la función _element_info .
$form['select']+= _element_info('select');
Donde $form['select'] es el elemento select del formulario que queremos completar.
Es importante que se le añada esta sentencia antes de establecer las propiedades específicas de nuestro form, ya que sino, sobreescribirá varias de ellas y perderemos información.
De todas formas, la forma recomendable de generar un formulario en drupal, que nos evita este tipo de problemas es usar drupal_get_form() en la llamada a la función que genera el formulario, en lugar de drupal_render en la propia función.