Question

I have a taxi app where time of ride is inserted in table. Every nth (5 in example) ride is free. What I need is when user has more than 50 rides every 3rd should be free. In code below i managed to do every 5th but when its over 50 it starts counting every 3rd from all rides and everything is mashed up. Is it posible to count every 5th till 50 and after that count every 3rd?

    $i=$rows;
    if ($rows>50){
        if ($i != 0 && $i%3 == 0){
        echo "<p>This ride is free</p>";
        }
        elseif ($i%3 == 2){
        echo "<p>Next ride is free</p>";
        }
    $i--;
    break;
    }
    elseif ($rows<=50){
        if ($i != 0 && $i%5 == 0){
        echo "<p>This ride is free</p>";
        }
        elseif ($i%5 == 4){
        echo "<p>Next ride is free</p>";
        }
    $i--;
    break;
    }
Était-ce utile?

La solution 2

With this code the 53rd, 56th etc. rides should be free:

    if ($rows>50){
    if ($i != 0 && ($i - 50) %3 == 0){

Autres conseils

I think this below is what you are looking for. I took the $i--; and break; out because I cannot see the purpose of them unless this is somehow inside of a bigger loop but then I still don't understand the purpose of them. Anyways.

$i=$rows;
if ($rows>50){
    $i = $i - 50;
    if ($i != 0 && $i%3 == 0){
        echo "<p>This ride is free</p>";
    } else if ($i%3 == 2){
        echo "<p>Next ride is free</p>";
    }
} else if ($rows<=50){
    if ($i != 0 && $i%5 == 0){
        echo "<p>This ride is free</p>";
    } else if ($i%5 == 4){
        echo "<p>Next ride is free</p>";
    }
}

Tested on http://sandbox.onlinephpfunctions.com/

for($rows=0;$rows<75;$rows++){
  $i=$rows;
  echo $rows;
  if ($rows>50){
      $i = $i - 50;
      if ($i != 0 && $i%3 == 0){
          echo ": This ride is free";
      } else if ($i%3 == 2){
          echo ": Next ride is free";
      }
  } else if ($rows<=50){
      if ($i != 0 && $i%5 == 0){
          echo ": This ride is free";
      } else if ($i%5 == 4){
          echo ": Next ride is free";
      }
  }
  echo "\n";

Results:

0
1
2
3
4: Next ride is free
5: This ride is free
6
7
8
9: Next ride is free
10: This ride is free
11
12
13
14: Next ride is free
15: This ride is free
16
17
18
19: Next ride is free
20: This ride is free
21
22
23
24: Next ride is free
25: This ride is free
26
27
28
29: Next ride is free
30: This ride is free
31
32
33
34: Next ride is free
35: This ride is free
36
37
38
39: Next ride is free
40: This ride is free
41
42
43
44: Next ride is free
45: This ride is free
46
47
48
49: Next ride is free
50: This ride is free
51
52: Next ride is free
53: This ride is free
54
55: Next ride is free
56: This ride is free
57
58: Next ride is free
59: This ride is free
60
61: Next ride is free
62: This ride is free
63
64: Next ride is free
65: This ride is free
66
67: Next ride is free
68: This ride is free
69
70: Next ride is free
71: This ride is free
72
73: Next ride is free
74: This ride is free

What are those break; statements for? Is that code inside a loop? If it is, is the line $i=$rows; inside the loop too? Because if so, $rows will always be > 50.

You should post the whole loop code into the question so we can have a better view.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top