Ha! Yes, Joomla 3.1 threw lots of depreciated errors with error reporting on.
I have tested a new Joomla 4 install with CB, CB Subs, promotions etc and all using newest versions and I think I found the answer to my problem with J! 3.1 and PHP 8.1.
When I went to create a promotion in Joomla 4 / CBSubs, it gave me an SQL error this time when trying to create promotion.. after Googling the error, I saw a post with Beat mentioning that CB Promotions needs CBSubs Tax installed also. I installed this in Joomla 4, and all fixed. So I went back to my Joomla 3.1 site, installed CBSubs Tax, changed website to use PHP 8.1 and it works - no PHP array error when creating new promotion! Strangely CB promotions worked without CBSubs Tax installed when using PHP 7.4. But it works now, so this is solved (for me!)
I will continue to experiment in J! 4 while i finish some projects in J! 3.
Thanks for your help Kyle,
Rik