Parece que, ao usar o RecursiveArrayIterator::offsetSet()
método para alterar um valor em um objeto JSON, você está iterando que o novo valor precisa ser do mesmo tipo do valor original. Eu imagino mais frequentemente do que não, pelo menos ao lidar com iteração JSON, que o valor será um objeto ou uma matriz porque o iterador trata o objeto como uma matriz. Se você tentar configurá-lo para outro tipo de dados (ou seja, string, inteiro, etc), o PHP lançará um:
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Passed variable is not an array or object, using empty array instead'
Minha solução alternativa foi usar RecursiveArrayIterator::offsetUnset
primeiro para anular o valor antigo e seu tipo e, em seguida, chamar RecursiveArrayIterator::offsetSet()
para definir o novo valor.