Re: Arrays misbehaving!

From: Date: Fri, 30 Aug 2002 22:29:35 +0000
Subject: Re: Arrays misbehaving!
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-114704@lists.php.net to get a copy of this message
On Fri, 30 Aug 2002, Cameron Thorne wrote: > Can anyone explain why the following code operates the way it does in my > comments? Sure. > <?php > > $test = array ( 'a' => 'A', 'b' => 'B', > 'c' => 'C'); An associative array, $test. > > if (array_key_exists(2, $test)) echo "It works by key number!"; // Does not > work. ... for subjective definitions of "work." It works alright. Nothing prints because there isn't an array key '2' in $test. > if (array_key_exists('c', $test)) echo "It works by key name!"; // Works. Of course. > print_r(array_keys($test)); // outputs "Array ( [0] => a [1] => b [2] => > c ) " You've done two things with this statement. (1) Got all the keys from $test, then (2) printed out the keys in "human readable" format. print_r() is printing information about the array which was returned from the call to array_keys(). Examine the output from "print_r($test)" and check the documentation for print_r() & array_keys() to get a glimpse into what might be the source of what's got you a bit confused. > ?> > Any ideas? According to the documentation, it seems like I should be able > to access any key in the array by either name or number (which is what I > want to do). You can access array indicies by number for non-associative arrays: $test = array( "A", "B", "C", "D" ); OR associative arrays that use numbers for keys: $test = array( 0 => "A", 1 => "B", 3 => "C", 4 => "D" ); echo( $test[2] ); ... will work for either of those, but the indicies of your original $test: > $test = array ( 'a' => 'A', 'b' => 'B', > 'c' => 'C'); have to accessed with the appropriate key. hth, ~Chris

« previous php.general (#114704) next »