On Tue, 2007-10-23 at 11:54 -0400, Andrew Ballard wrote:
> On 10/23/07, Robert Cummings <[EMAIL PROTECTED]> wrote:
> > On Tue, 2007-10-23 at 17:34 +0200, Julien Pauli wrote:
> > > <?php
> > > echo "coucou " . print('v ' . print('u ' . print('toctoc ') . 'hihi
> > > ') ) .
> > > 'tata ' . print('zozo ' . print('pupu '));
> >
> > That's not cool, that's a mess. Why doe sit happen the way it does?
> > First off, print() is a function so nesting functions means the
> > innermost functions get processed first, this is why the output has
> > mangled order. The 1's show up in the output because you're
> > concatenating the return value of the print() function which is true for
> > success.
> 
> Agreed it's a mess, and I don't know why anyone would do it, but
> that's only part of the story. I don't think the OP was wondering
> where the 1s came from; at least I'm not. I am wondering why it
> displays:
> 
> toctoc hihi u 1pupu zozo 1v 1tata 1coucou 1
> 
> instead of
> 
> toctoc u 1hihi v 1pupu zozo 1coucou 1tata 1

My bad, print is not a function, and so:

    print( 'toctoc ' ).'hihi ';

is equivalent to:

    print( 'tocktoc '.'hihi ' );

Parenthesis are option and only server to control precedence. But unlike
echo print does return a value.

Cheers,
Rob.
-- 
...........................................................
SwarmBuy.com - http://www.swarmbuy.com

    Leveraging the buying power of the masses!
...........................................................

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

Reply via email to