PHP str_replace com for loop from array

Ok, eu tenho um str_replace e o que eu quero fazer, é tirar valores de uma matriz e pegar a próxima peça para replace a palavra “cão”. Então, basicamente, eu quero que o $ string seja lido:

“O pato comeu o gato e o porco comeu o chimpanzé”

<?php $string = 'The dog ate the cat and the dog ate the chimp'; $array = array('duck','pig'); for($i=0;$i 

Este código apenas retorna:

“O pato comeu o gato e o pato comeu o chimpanzé”

Eu tentei várias coisas, mas nada funciona. Alguém tem alguma ideia?

Editar: Desculpe pela resposta errada anteriormente. Isso vai fazer isso. Não há str_replace , não preg_replace , apenas raw, fast string searching and splicing:

  

ps Não é um grande problema neste exemplo, mas você deve manter a count() fora do seu loop. Com ele onde você teve, ele é executado a cada iteração e é mais lento do que apenas chamá-lo de antemão.

  

O pato comeu o gato e o porco comeu o chimpanzé

Após a primeira iteração do seu loop for $ string terá substituído as ocorrências de cachorro com pato e as seguintes iterações não farão nada.

Não consigo pensar em uma maneira mais elegante de resolver isso e espero que haja algo mais simples possível:

  

ainda uma opção

  $str = 'The dog ate the cat and the dog ate the chimp'; $rep = array('duck','pig'); echo preg_replace('/dog/e', 'array_shift($rep)', $str); 

Usando substr_replace() ;