Jump to content

help with, ELSE IF, Issue.


Darren_Stanley

Recommended Posts

I have a working IF statement, but then when I add a 'ELSE IF' to this this 'overwrites' my IF.

I will try to explain more here.

 

For the purpose of this example,

getNewLine() returns 6. 

$noOfLines = 58.

$rotaDate = 5th Jan 2014

$line = from 1 to 58.

 

My initial IF statement gives correct output (adding 1 week to each line):-

//This function determines and inserts the custom column data.
  function customData($line){
  global $rotaDate,$noOfLines;

       if($line >= getNewLine()){
            $weeks=($line-getNewLine());
            $modifier=$weeks.' weeks';
            $rotaDate->modify($modifier);
        return $rotaDate ->format("jS F Y");
          }

1  

2  

3  

4  

5

6   05-Jan-14 

7  12-Jan-14 

8  19-Jan-14  

9  26-Jan-14  

10 02-Feb-14 

...

...

...

...

56  21-Dec-14 

57  28-Dec-14

58  04-Jan-15 

 

So far, So good..

But now, I need to continue from 4-Jan line 58, back up to line 1, 1week later (11-Jan) down to line 5 of which would be 8th Feb.  

 

i.e. all lines Less than getNewLine() // which is 6

 

To do this I have added ELSE IF:-

 /*      else if($line<getNewLine()) {
            $weeks=($line+$noOfLines-getNewLine());
            $modifier=$weeks.' weeks';
            $rotaDate->modify($modifier);
        return $rotaDate ->format("jS F Y");
     }
*/

This the outputs from line 1 to line 5 correctly, But it continues to overwrite the dates down to line 58. It needs to stop at line 6.

1   11-Jan-15  

2   18-Jan-15  

3   25-Jan-15  

4   01-Feb-15 

5   08-Feb-15 

6   15-Feb-15  

7   22-Feb-15  

8   01-Mar-15 

9   08-Mar-15  

10   15-Mar-15  

11   22-Mar-15   

...

...

...

... down to line 58...

 

Any ideas why this is happening and how I may stop this please?

Link to comment
https://forums.phpfreaks.com/topic/287018-help-with-else-if-issue/
Share on other sites

Look at the sample below taken from PHP manual page:

 <?php

/* Incorrect Method: */
if($a > $b):
    echo $a." is greater than ".$b;
else if($a == $b): // Will not compile.
    echo "The above line causes a parse error.";
endif;


/* Correct Method: */
if($a > $b):
    echo $a." is greater than ".$b;
elseif($a == $b): // Note the combination of the words.
    echo $a." equals ".$b;
else:
    echo $a." is neither greater than or equal to ".$b;
endif;

?>

I have modified the IFELSE statement in order to debug to return $Line if <6.

with an un-expected outcome.

elseif($line<getNewLine()) {
            $weeks=($line+$noOfLines-getNewLine());
            $modifier=$weeks.' weeks';
            $rotaDate->modify($modifier);
        return $line;//$rotaDate ->format("jS F Y");
     }

Only the first line gets the $line number from the "if else" statement.

The remaining lines less than 6, get the modified $rotaDate, each time this function is called.

You missed:

1. Colon at end of if statement and at end of elseif statement.

2. You missed the endif; statement at the last.

 

It sounds like you're describing the alternate syntax for if statements:

http://www.php.net/manual/en/control-structures.alternative-syntax.php

 

You can also use curly brackets:

http://www.php.net/manual/en/control-structures.elseif.php

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.