On Tue, 2007-10-23 at 11:54 -0400, Andrew Ballard wrote: > On 10/23/07, Robert Cummings <robert@xxxxxxxxxxxxx> 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