TalkPHP

TalkPHP (http://www.talkphp.com/forums.php)
-   Tips & Tricks (http://www.talkphp.com/tips-tricks/)
-   -   Generating a Range of Numbers the Easy Way (http://www.talkphp.com/tips-tricks/1247-generating-range-numbers-easy-way.html)

Wildhoney 09-28-2007 10:57 AM

Generating a Range of Numbers the Easy Way
 
After Haris' mention of the PHP function range(), I thought the kindest thing to do would be to give it a proper introduction. So here is that introduction!

Range is native PHP function that takes 2 compulsory arguments and 1 optional argument (As of PHP 5.0.0 which defaults to 1) and returns an array. Seem ever so simple? Well it is! The 3 arguments the function can accept are as follows:
  • $low: The number or character to begin at.
  • $high: The number or character to end at.
  • $step: The amount to count up or down in.

Take the example below which will begin at 0, increment in steps of 10 until we get to 50.

PHP Code:

foreach(range(05010) as $iNumber)
{
    echo 
$iNumber ' ';


This would result in 0 10 20 30 40 50 being returned. If you were to assign the result of the range() into an array then all you would see is a nicely constructed array:

Code:

Array
(
    [0] => 0
    [1] => 10
    [2] => 20
    [3] => 30
    [4] => 40
    [5] => 50
)

The great thing about this function is that it can also count up or down in characters. For instance, if we wanted to list the 6 characters from A to F, then we could do that quite easily with range():

PHP Code:

$aArray range('A''F');
echo 
implode(', '$aArray); 

Which would output A, B, C, D, E, F. Range can also go backwards, which can be a whole lot of fun. Not quite as exciting as a rollercoaster going backwards but I hope you appreciate me trying to liven the article up!

PHP Code:

$aArray range(100025);
echo 
implode(', '$aArray); 

As I'm sure you can surmise, the above example would give us 100, 75, 50, 25, 0!

There is not a lot more to it. Such an easy function but one that is perhaps not as well heard of as it should be. I can't say that I've really needed this function before, however, perhaps there might be an occasion where you would require its presence! I'd be interested to know if anyone out there has any really good uses for it? I've seen some good uses on php.net for such tasks as checking if an array is associative - but any more would be great to hear!

maZtah 11-24-2007 12:18 PM

Good article/introduction.

What's the advantage of using range() instead of just a for loop?

DarkPrince11 11-24-2007 06:12 PM

Range creates an array of the numbers without and has less overhead than calling a loop. It's basically quicker, but if you're planning on printing the numbers, than it's better to use a for loop, because you'll eventually have to loop the range array to print it out.

Wildhoney 11-25-2007 12:42 AM

I must admit that I've never used the range function, despite being fully aware of it. I suppose the only instance I could think of using it, is in an array:

php Code:
foreach(range(1, 10) as $iNumber)
{

}

What other purposes are there?

Haris 11-25-2007 01:09 AM

Quote:

Originally Posted by Wildhoney (Post 4553)
I must admit that I've never used the range function, despite being fully aware of it. I suppose the only instance I could think of using it, is in an array:

php Code:
foreach(range(1, 10) as $iNumber)
{

}

What other purposes are there?

Populating fields is only what comes into my mind.

wGEric 11-25-2007 09:03 PM

It has it's uses. I've populated arrays with A-Z using range. Easier than typing out every letter.


All times are GMT. The time now is 07:47 AM.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0