You must include a unique parameter marker for each value you wish to pass in to the statement when you call PDOStatement::execute(). You cannot use a named parameter marker of the same name twice in a prepared statement.
Just wait until you want to pass an array to a WHERE id IN ( :ids) statement. Can’t be done cleanly.
I think the named parameters stuff is more of a SQL Prepared statement limit as opposed to a php restriction. Might be wrong.
It’s actually fairly easy to do a bit of processing on your sql statement and implement the functionality you want. I always wrap the PDO object just so I can tweak this stuff.