This is an old topic, but if anyone is interested in a cause.
This usually happens when a select field is set one way, data is saved and then it is set the other way. If you have a select field that only allows one value then that value is stored as a string. If you have a select field that allows multiple values then that value is stored as an array. Updating the field does not alter how existing data is stored and if you have the field set to return values then you’ll get whatever is in the DB be it string or array.
When you switch from one to another and there was already data stored then you need to account for it in your template where you are getting the value or optionally you could build an acf/load_value for the field and you can account for the change there.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!