Why do Drupal Form Builder properties have hash marks (#) in the key? Possible Duplicate:
  What are “#” properties?  




This one's more out of curiosity than anything. 

If you look at the Form API Reference, you can see that all properties have number signs/hash marks (#) at the start of the key. 



My question is, why is it like this? Why bother having these hash marks in front of property names, other than "That's the convention somebody somewhere decided", and to occasionally cause people grief when they forget to add one?

Quite curious. Thanks!
If you don't add a hashmark you're not setting that property, but are instead defining another level of a render array element. Consider this example:

$form['your_name'] = array(
  '#type' =&gt; 'textfield',
  '#title' =&gt; 'Your Name',
  'title' =&gt; array( // I am an entirely new element, whose key is "title".
    '#type' =&gt; 'textfield',
    '#title' =&gt; 'Your Title',
    '#description' =&gt; 'Example: Sir, Mr, Bossman, Chieftan',
  ),
);


This example is silly, but it should describe why a hashmark is used to set a property. If your question is really "why use a hashmark instead of an exclamation point, an ampersand, or some other random character?", well, I don't know. I've seen the hash symbol used to define properties in other languages and APIs.