Re: Help understanding code...
| From: | Robert Cummings | Date: | Thu, 25 Sep 2003 16:53:47 +0000 |
| Subject: | Re: Help understanding code... | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-163947@lists.php.net to get a copy of this message | ||
On Thu, 2003-09-25 at 12:47, Jeff McKeon wrote:
> I've just picked up a more advanced book on PHP and it has a lot of
> example code in it. I understand most of it but some things I'm seeing I
> don't understand. Like the following...
>
> code:
> ------------------------------------------------------------------------
> --------
>
> $couponcode = (! empty($_REQUEST['couponcode'])) ?
> $_REQUEST['couponcode'] : NULL;
> ------------------------------------------------------------------------
> --------
>
> I think this is saying:
>
> If the global variable couponcode is not empty, then the variable
> '$couponcode' is equal to "$_REQUEST['couponcode']" otherwise it
> gets a
> "NULL" value.
>
> What's throwing me is the use of the "!" and "?" and ":"
Ternary operator, if the first expression evaluates to true then it
returns the result of the second expression, otherwise it returns the
result of the third expression. The ! is part of the first expression.
>
> If What I suspect is correct, I've never seen an if-then statement like
> this. If it is a replacement for an IF-Then statement then it's much
> cleaner and I'd like to use it.
>
> another one is:
>
>
> code:
> ------------------------------------------------------------------------
> --------
> IF (!strcmp($operator, '+')) {
> $result = $num1 + $num2
> }
> ------------------------------------------------------------------------
> --------
>
> I've looked up strcmp() and know it's used to compair two strings. The
> $operator variable in the script that this was taken from is set to
> either "-", "+", "*" or "/". What I don't
> understand here is what the
> "!" in front of strcmp() means.
>
> Can anyone break down the code for me and explain the parts?
This is a short form for testing if the strings are equal. Rather than
test if strcmp( x, y ) == 0 which requires a comparison, a single
boolean operator is applied so that if 0 is returns the ! makes it true.
This is generally a carry forward from C coding style, where I believe
the ! style runs through the processor faster than the == style.
HTH,
Rob.
--
.------------------------------------------------------------.
| InterJinn Application Framework - http://www.interjinn.com
|
:------------------------------------------------------------:
| An application and templating framework for PHP. Boasting |
| a powerful, scalable system for accessing system services |
| such as forms, properties, sessions, and caches. InterJinn |
| also provides an extremely flexible architecture for |
| creating re-usable components quickly and easily. |
`------------------------------------------------------------'