At 09:57 20.03.2003, cpaul said: --------------------[snip]-------------------- >> as associative array. Take this example: >> $a = array('one','two','three'); >> $b = array(); $b[0] = 'one'; $b[1] = 'two'; $b[2] = 'three'; >> $c = array(0 => 'one', 1 => 'two', 2 => 'three'); >> >> Which one would you believe is enumerated, and which one is associative? > >they'd all be enumerated, except perhaps $c -- but i've grown :) and now >understand that $c winds up being an enumerated array.. or is it?
Well, all these 3 arrays are _exactly_ the same. If you print_r() them you'd see Array { 0 => one 1 => two 2 => three } The key to this issue seems to be understanding that it makes no difference how the array keys are constructed... an array is an association of key to value, being a hash always if you want to see it that way. >in my code.... > > $q = mysql_query ( "SELECT production_id, title FROM productions ORDER >BY title;" ); > $this->all_productions[""] = ""; > while ( $row = mysql_fetch_array( $q ) ) { > $this->all_productions[$row["production_id"]] = $row["title"]; > } > >the array is kept in order when i foreach the array - wouldn't they sort >themselves into 0,1,2,3,4,5,etc if my while loop was populating an >enumerated array? or are all arrays in php actually a keyed hash? You're chosing your own keys here - so this makes a perfect associative array, even if the keys ($row['production_id']) would be a sequenced number. If you would just add the titles up ($this->all_productions[] = $row['title']), PHP would choose an index key for you - the most general thing it can do is to enumerate it. Basically what it does is array[count(array)] = new_element So much for the "theory" - what are you really trying to achieve? Maybe there's something you can redesign so you're not relying on the fact if an array is "enumerated" or not. -- >O Ernest E. Vogelsinger (\) ICQ #13394035 ^ http://www.vogelsinger.at/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php