Different values depending on whether in or out of an arrayformula

For some reason I am getting different values (a winner) depending on if the formula is inline with the values or if it’s in an arrayformula.

There’s only 1 row of values on the table.

Player 1 (B column) has played Rock
Player 2 (H column) has played Scissors

if this formula is inline the winner is B
=if(or(and($D$2:$D=“Rock”, $J$2:$J=“Scissors”), and($D$2:$D=“Scissors”, $J$2:$J=“Paper”), and($D$2:$D= “Paper”, $J$2:$J=“Rock”)), $B$2:$B&" won", $H$2:$H&" won")

If this formula is on cell T2 the winner is H
=ARRAYFORMULA(if(LEN($A$2:$A) = 0,“”,if($D$2:$D = $J$2:$J,“It’s a tie”, if(or(and($D$2:$D=“Rock”, $J$2:$J=“Scissors”), and($D$2:$D=“Scissors”, $J$2:$J=“Paper”), and($D$2:$D= “Paper”, $J$2:$J=“Rock”)), $B$2:$B&" won", $H$2:$H&" won"))))

Anyone can understand why?

Try removing all of the dollar signs. The purpose of the dollar signs is to prevent the column values from increment when dragging a formula down multiple cells. Shouldn’t be necessary when using an arrayformula.