Sunday, January 29, 2012

Is it possible to have IF statement in an Echo statement in PHP


Thanks in advance. I did look at the other questions/answers that were similar and didn't find exactly what I was looking for.



I'm trying to do this, am I on the right path?




echo " <div id='tabs-".$match."'>

<textarea id='".$match."' name='".$match."'>".

if ($COLUMN_NAME === $match)
{
echo $FIELD_WITH_COLUMN_NAME;
}

else
{
}

."</textarea>

<script type='text/javascript'>
CKEDITOR.replace( '".$match."' );
</script>

</div>";



I am getting the following error message in the browser:



Parse error: syntax error, unexpected T_IF



Please let me know if this is the right way to go about nesting an IF statement inside an echo. Thank you.

5 comments:

  1. No. You can however use the ternary operator.

    $a = 0;
    echo 'Foo ' . ($a == 0 ? 'zero' : 'non-zero') . ' Bar';


    Note the (), you need them.

    ReplyDelete
  2. Use the PHP ternary operator, you can read more about it here.

    echo " <div id='tabs-".$match."'>
    <textarea id='".$match."' name='".$match."'>".
    ($COLUMN_NAME==$match ? $FIELD_WITH_COLUMN_NAME : "").
    "</textarea>
    <script type='text/javascript'>
    CKEDITOR.replace( '".$match."' );
    </script>
    </div>";

    ReplyDelete
  3. This will work

    $val = "";
    if ($COLUMN_NAME === $match)
    {
    $val = $FIELD_WITH_COLUMN_NAME;
    }
    echo " <div id='tabs-".$match."'>

    <textarea id='".$match."' name='".$match."'>". $val ."</textarea>

    <script type='text/javascript'>
    CKEDITOR.replace( '".$match."' );
    </script>

    </div>";

    ReplyDelete
  4. You can't nest an if inside an echo. You need either to split the echo into separate statements:

    echo " <div id='tabs-".$match."'>

    <textarea id='".$match."' name='".$match."'>";

    if ($COLUMN_NAME === $match)
    {
    echo $FIELD_WITH_COLUMN_NAME;
    }

    echo "</textarea>

    <script type='text/javascript'>
    CKEDITOR.replace( '".$match."' );
    </script>

    </div>";


    or to use the ternary operator:

    echo " <div id='tabs-".$match."'>

    <textarea id='".$match."' name='".$match."'>".

    (($COLUMN_NAME === $match) ? $FIELD_WITH_COLUMN_NAME : "")

    ."</textarea>

    <script type='text/javascript'>
    CKEDITOR.replace( '".$match."' );
    </script>

    </div>";

    ReplyDelete
  5. use ... . ($COLUMN_NAME === $match) ? $FIELD-WITH_COLUMN_NAME : '' . ...

    dismiss the if in front of it

    ReplyDelete