ich vermute mal, $columns ist vorher 0.
$columns++ ist ein post-increment, und wenn es vorher 0 war, liefert $columns++ als rückgabewert wieder die 0, erst nach der auswertung wird es inkrementiert. wenn du daraus ein pre-incement machst:
++$columns and ...
dann sollte es wie gewünscht funktionieren.