2010-01-03 73 views
0

我在Drupal中动态生成一个选择列表,我想创建一个关联数组来填充节点ID作为值,并将节点的标题作为选项。使用while循环为选择列表创建关联数组?

默认情况下,它使每个选项的值成为选择列表的索引。这是不好的,因为选择列表是动态的,这意味着值不会以相同的顺序。 我使用drupal_map_assoc使该值与选项相同,但我有基于存储在此字段中的值的查询,因此如果有人更新存储的值,则查询将不匹配。

<option value="Addison Reserve Country Club Inc.">Addison Reserve Country Club Inc.</option> 

我想用节点ID替换值也与查询拉。

$sql = 'SELECT DISTINCT title, nid FROM {node} WHERE type = \'accounts\' '; 
     $result = db_query($sql); 
    while ($row = db_fetch_array($result)) { 
     $return[] = $row['title']; 
     //Trying to do something like 'Addison Reserve Country Club' => '2033' - where 2033 is the nid 

    } 
     $return = drupal_map_assoc($return); 

回答

1

我觉得你只是想这样做内环路:

$return[$row['nid']] = $row['title']; 

基于您的评论,你也想在循环之后做一个array_flip(),但我认为您的评论可能只是让它倒退。

+0

迈克,你是男人。我有类似的语法,但抛出了一些错误。我可能已经错过了$ row ['nid']上的封装支架 - 不过它可以工作。 – tpow 2010-01-03 22:04:22