tomfmason Posted September 8, 2006 Share Posted September 8, 2006 I have a query that will retrieve a product from disription from my db. Well I am wanting to use a counter and if $i is even then I will use one lay out and if it is odd I will use another.here is a simple example of my code[code=php:0]$i = 0;while ($rw = mysql_fetch_assoc($sql)) { if ($i == "I need something that means an even number") { $class = "startRight"; }else{ $class = "startLeft"; } //now I finish displaying the results}[/code]Any suggestions would be great.Thanks,Tom Link to comment https://forums.phpfreaks.com/topic/20087-how-to-find-if-a-number-is-even-or-odd/ Share on other sites More sharing options...
.josh Posted September 8, 2006 Share Posted September 8, 2006 $class = ($i % 2 == 0) ? "startRight" : "startLeft"; Link to comment https://forums.phpfreaks.com/topic/20087-how-to-find-if-a-number-is-even-or-odd/#findComment-88166 Share on other sites More sharing options...
tomfmason Posted September 8, 2006 Author Share Posted September 8, 2006 Will that work?? I am going to display 10 results per page. I guess I could create an even array then use in_array. But I thought that there might be a better way.Thanks,Tom Link to comment https://forums.phpfreaks.com/topic/20087-how-to-find-if-a-number-is-even-or-odd/#findComment-88167 Share on other sites More sharing options...
.josh Posted September 8, 2006 Share Posted September 8, 2006 a "better" way? I don't think it gets better than that...that's just a shorthand version of what you were trying to do. you could have done it like this:[code]$i = 0;while ($rw = mysql_fetch_assoc($sql)) { if ($i % 2 == 0) { $class = "startRight"; }else{ $class = "startLeft"; } //now I finish displaying the results}[/code]however, i don't see anything in your code that increments $i ...what is $i supposed to be? Link to comment https://forums.phpfreaks.com/topic/20087-how-to-find-if-a-number-is-even-or-odd/#findComment-88168 Share on other sites More sharing options...
tomfmason Posted September 8, 2006 Author Share Posted September 8, 2006 I forgot to add $i++; in my example.$i is counting the number of times that the loop is processed. Which will be ten times. So if I go with your code then on the 4th time then wont it start on the left instead of the right? Or am I missing your point completly??Thanks for the Help,Tom Link to comment https://forums.phpfreaks.com/topic/20087-how-to-find-if-a-number-is-even-or-odd/#findComment-88170 Share on other sites More sharing options...
.josh Posted September 8, 2006 Share Posted September 8, 2006 okay the point of the ($i % 2 == 0) is that the % operator is the modulus operator. it takes $i and divides it by 2 and gives the remainder. if there is no remainder, then the number must be even. So in your if..else.. statement, it does just that, assigning 'startRight' to $class if there is no remainder (therefore the condition is true because it would equal 0), but if it is not, then it assigns 'startLeft' to $class instead. my one line piece of code is simply a shorthand way of doing your if..else statement, with the exact same condition. it's called a ternary operator. Both of these do the same thing:[code]$i = 0;while ($rw = mysql_fetch_assoc($sql)) { if ($i % 2 == 0) { $class = "startRight"; }else{ $class = "startLeft"; } //now I finish displaying the results $i++;}[/code]does the same as this:[code]$i = 0;while ($rw = mysql_fetch_assoc($sql)) { $class = ($i % 2 == 0) ? "startRight" : "startLeft"; // now i finish displaying the results $i++;}[/code]basically that line of code says this: if the part in the ( ) is true, then assign the value on the left side of the colon to $class. If it is false, then assign the value to the right side of the colon. Link to comment https://forums.phpfreaks.com/topic/20087-how-to-find-if-a-number-is-even-or-odd/#findComment-88173 Share on other sites More sharing options...
tomfmason Posted September 8, 2006 Author Share Posted September 8, 2006 Thank you very much. That was very informative. I also googled it and found several other methods.Thanks again,Tom Link to comment https://forums.phpfreaks.com/topic/20087-how-to-find-if-a-number-is-even-or-odd/#findComment-88174 Share on other sites More sharing options...
.josh Posted September 8, 2006 Share Posted September 8, 2006 Oh and to answer this:[quote author=tomfmason link=topic=107313.msg430342#msg430342 date=1157691771] So if I go with your code then on the 4th time then wont it start on the left instead of the right? Or am I missing your point completly??[/quote]no. if you do $i++ it will alternate between assigning left and right to $class. each time $i is incremented, it divides that number by 2 and compares the remainder to 0. 0 / 2 = 0 no remainder:even.1 / 2 = 0 remainder .5: odd.2 / 2 = 1 no remainder: even.3 / 2 = 1 remainder 1: odd.4 / 2 = 2 no remainder: even. 5 / 2 = 2 remainder 1: odd. 6 / 2 = 3 no remainder: even.7 / 2 = 3 remainder 1: odd.8 / 2 = 4 no remainder: even.9 / 2 = 4 remainder 1: odd.10 / 2 = 5 no remainder: even.get it? Link to comment https://forums.phpfreaks.com/topic/20087-how-to-find-if-a-number-is-even-or-odd/#findComment-88176 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.