Thanks for sharing your solution,
and for reminding me of the good old days on the PHP golf course.
After digging out my old notes, I can finally share my PHP solutions too.
I had many different 173 strokers, such as
(without bothering with the routine PHP bitwise ~ string inversion golfing trick
to reduce the " on the wall" strings below by one char -
see here
or the "Quoted Strings" section at The golf course looks great, my swing feels good, I like my chances (Part VI) for the gory details of this PHP trick):
<?for(;$c=($b=++$n." bottle$s of beer")." on the wall",99^$x="$c, $b.
$z$x";$s=s)$z="Take one down and pass it around, $c.
";echo$x."Go to the store and buy some more, $c.";
<?for(;$c=($b=++$n." bottle$z[20] of beer")." on the wall",99^$x="$c,
+$b.
$z$x";)$z="Take one down and pass it around, $c.
";echo$x."Go to the store and buy some more, $c.";
<?for(;99^$x=($c=($b=++$n." bottle$x[21] of beer")." on the wall").",
+$b.
$x";$x="Take one down and pass it around, $c.
$x")?><?=$x,"Go to the store and buy some more, $c.";
I had a mental block and just could not get to 172!
After I had given up, ToastyX mercifully gave me a hint,
and then I finally did get to 172 -- but did not submit
either of these two below because I would never have
thought of them without ToastyX's hint:
<?for(;99^$c=($b=++$n." bottle$x[21] of beer")." on the wall";$x="
Take one down and pass it around, $c.
$c, $b.$x")?><?="$c, $b.$x
Go to the store and buy some more, $c.";
<?for(;99^$c=($b=++$n." bottle$s of beer")." on the wall";$s=s)$x="
Take one down and pass it around, $c.
$c, $b.$x";echo"$c, $b.$x
Go to the store and buy some more, $c.";