> -----Original Message-----
> From: Miroslav Figlar [mailto:[EMAIL PROTECTED]]
> Sent: 30 May 2002 13:05
> To: [EMAIL PROTECTED]
> Subject: [PHP] nested if parse error
>
>
> could somebody explain me please what is wrong with this
> piece of code?
> <?
>     if (1):
>         if (1) echo "hello";
>     else:
>     endif;
> ?>

 Well, first off you've broken the golden rule, which is: Don't mix the :-type syntax 
with the {}-type or completely bare syntaxes.

In more detail:  on reaching the "else", PHP matches it with the nearest preceding if; 
this is the "If (1) echo ..." line, which isn't using :-type syntax, so it expects the 
else also not to use :-type syntax -- so the : is a parse error.

Using :-type syntax, you *must* write this as:

     if (1):
         if (1):
             echo "hello";
         endif;
     else:
     endif;

> this works fine (no parse error):
> <?
>     if (1):
>     else:
>         if (1) echo "hello";
>     endif;
> ?>

This is because the "else" now matches the first "if (1):", which uses :-type syntax, 
so the "else" is expected to have a ":" after it, which it does -- so no parse error.

Cheers!

Mike

---------------------------------------------------------------------
Mike Ford,  Electronic Information Services Adviser,
Learning Support Services, Learning & Information Services,
JG125, James Graham Building, Leeds Metropolitan University,
Beckett Park, LEEDS,  LS6 3QS,  United Kingdom
Email: [EMAIL PROTECTED]
Tel: +44 113 283 2600 extn 4730      Fax:  +44 113 283 3211 

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

Reply via email to