At 09:57 20.03.2003, cpaul said:
>> 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

PHP General Mailing List (
To unsubscribe, visit:

Reply via email to