On Fri, Oct 28, 2011 at 12:09:24PM -0600, George Langley wrote:
>       Hi all. Am wondering if there is a best practice for looping through an 
> array, when you need both the item and its position (ie. 1, 2, 3....). The 
> two ways I know of:
> 
> // the for loop tracks the position and you get each item from the array
>       $allFiles = array("coffee.jpg", "tea.jpg", "milk.jpg");
>       $numberOfFiles = count($allFiles);
>       for ($i=1; $i<=$numberOfFiles; $i++) {
>               $currFile = $allFiles[$i - 1]; // since arrays start with 0
>               doThisWith($currFile);
>               doThatWith($i);
>       }
> 
> OR:
> 
> // the for loop gets each item and you track the position
>       $allFiles = array("coffee.jpg", "tea.jpg", "milk.jpg");
>       $counter = 1;
>       foreach ($allFiles as $currFile) {
>               doThisWith($currFile);
>               doThatWith($counter);
>               $counter += 1;
>       }
> 
>       Both are the same number of lines, but my tests (see code below) 
> indicate that the foreach loop is twice as fast.
>       Anyone have a "better" way - faster, more efficient, "cooler", etc.? 
> (Or see some flaw in my test code below?)
>       Thanks.
> 
> George Langley

If you are certain that your array is consecutively indexed from 
0, you can shave two lines off your code with:

        $allFiles = array("coffee.jpg", "tea.jpg", "milk.jpg");
        foreach ($allFiles as $key => $currFile) {
                doThisWith($currFile);
                doThatWith($key+1);
        }


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to