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