Re: [PHP] Array difficulty
On Tue, July 31, 2007 8:27 am, Carlton Whitehead wrote: I have an array like this: $chance = array(lowercase = 27, uppercase = 62, integer = 46); The values for each of the keys are randomly generated. I want to find the key name of the one which has the highest value. Currently, I'm doing this as follows: arsort($chance); $result = key($chance); -- Some people have a gift link here. Know what I want? I want you to buy a CD from some indie artist. http://cdbaby.com/browse/from/lynch Yeah, I get a buck. So? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Array difficulty
Hi Carlton, Tuesday, July 31, 2007, 2:27:46 PM, you wrote: I have an array like this: $chance = array(lowercase = 27, uppercase = 62, integer = 46); The values for each of the keys are randomly generated. I want to find the key name of the one which has the highest value. Currently, I'm doing this as follows: arsort($chance); foreach ($chance as $type = $value) { $result = $type; break; } At this point, $result would be equal to uppercase. I feel like this is a really kludgey way to accomplish this. Is there a better way? Not tested it, but max() should work as the first parameter can be an array: http://uk3.php.net/max Cheers, Rich -- Zend Certified Engineer http://www.corephp.co.uk Never trust a computer you can't throw out of a window -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Array difficulty
At this point, $result would be equal to uppercase. I feel like this is a really kludgey way to accomplish this. Is there a better way? Couldn't you just do arsort($chance); $lastItem = chance[( count( $chance ) - 1 )]; ? Why iterate through the array when all you need is the last value? thnx, Chris -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Array difficulty
I tried that earlier, but the problem is: count( $chance ) - 1 ); returns an integer, so I would be asking for something like $chance[1] or $chance[0], neither of which exist in the array. Keep in mind $chance only has keys with string names: The array looks like this: $chance = array(lowercase = 27, uppercase = 62, integer = 46); The values assigned to each key are randomly generated. Regards, Carlton Whitehead - Original Message - From: Chris Boget [EMAIL PROTECTED] To: Carlton Whitehead [EMAIL PROTECTED], php-general@lists.php.net Sent: Tuesday, July 31, 2007 9:43:00 AM (GMT-0500) America/New_York Subject: RE: [PHP] Array difficulty At this point, $result would be equal to uppercase. I feel like this is a really kludgey way to accomplish this. Is there a better way? Couldn't you just do arsort($chance); $lastItem = chance[( count( $chance ) - 1 )]; ? Why iterate through the array when all you need is the last value? thnx, Chris -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Array difficulty
At this point, $result would be equal to uppercase. I feel like this is a really kludgey way to accomplish this. Is there a better way? Not tested it, but max() should work as the first parameter can be an array: http://uk3.php.net/max Except he's looking for the key and not the value, which max() would return. Come to think of it, the solution I provided does the same thing. Untested but one of the below should work: arsort($chance); $lastItem = key( $chance[( count( $chance ) - 1 )]); OR arsort($chance); $lastItem = key( end( $chance )); thnx, Chris -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Array difficulty
On 31/07/07, Carlton Whitehead [EMAIL PROTECTED] wrote: Hi all, I have an array like this: $chance = array(lowercase = 27, uppercase = 62, integer = 46); The values for each of the keys are randomly generated. I want to find the key name of the one which has the highest value. Currently, I'm doing this as follows: arsort($chance); foreach ($chance as $type = $value) { $result = $type; break; } Assuming $chance is non-empty. $result = array_search(max($chance), $chance); -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Array difficulty
On Tue, 2007-07-31 at 14:43 +0100, Chris Boget wrote: At this point, $result would be equal to uppercase. I feel like this is a really kludgey way to accomplish this. Is there a better way? Couldn't you just do arsort($chance); $lastItem = chance[( count( $chance ) - 1 )]; $lastItem = end( $chance ); Cheers, Rob. -- ... SwarmBuy.com - http://www.swarmbuy.com Leveraging the buying power of the masses! ... -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Array difficulty
Couldn't you just do arsort($chance); $lastItem = chance[( count( $chance ) - 1 )]; $lastItem = end( $chance ); end() returns the value as well. You would also need to use key(). thnx, Chris -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Array difficulty
On 31/07/07, Carlton Whitehead [EMAIL PROTECTED] wrote: Couldn't you just do arsort($chance); $lastItem = chance[( count( $chance ) - 1 )]; I tried that earlier, but the problem is: count( $chance ) - 1 ); returns an integer, so I would be asking for something like $chance[1] or $chance[0], neither of which exist in the array. Keep in mind $chance only has keys with string names: http://uk3.php.net/current $chance = array(lowercase = 27, uppercase = 62, integer = 46); arsort($chance); $lastItem = current($chance); echo $lastItem\n\n; // 62 Alister -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Array difficulty
On 31/07/07, Alister Bulman [EMAIL PROTECTED] wrote: On 31/07/07, Carlton Whitehead [EMAIL PROTECTED] wrote: Couldn't you just do arsort($chance); $lastItem = chance[( count( $chance ) - 1 )]; I tried that earlier, but the problem is: count( $chance ) - 1 ); returns an integer, so I would be asking for something like $chance[1] or $chance[0], neither of which exist in the array. Keep in mind $chance only has keys with string names: http://uk3.php.net/current $chance = array(lowercase = 27, uppercase = 62, integer = 46); arsort($chance); max() returns the maximum value of an array. array_search() finds the key for a value So all that's needed to find the key of the maximum value is: $result = array_search(max($chance), $chance); I'd pretty much guarantee it'll be about an order of magnitude faster than any solution that relies on sorting the array. -robin -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php