Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, como posso dar str_replace em um array
tenho dois identificadores em uma string e preciso substituí-los por valores que vem em um array;
Por exemplo:
Eu tenho uma string
$string = 'Olá seus itens do pedido são {$produto_nome} R$ {$pedido_subtotal}';
Eu pesquiso por essas palavras entre {$} para substituí-las por valores de um array
array (size=3)
0 =>
array (size=2)
0 => string 'Produto1'
1 => string '200'
1 =>
array (size=2)
0 => string 'Produto2'
1 => string '222'
2 =>
array (size=2)
0 => string 'Produto3'
1 => string '123'
Eu tenho esse metodo que faz a identificação dos keys
public function Mensagem($string, $array = null) {
$this->Mensagem = (string) $string;
$this->Format = preg_match_all("/([{])([$])([^}]+)/", $this->Mensagem, $Result);
$this->Mensagem = str_replace(array('{$', '}',), '', $this->Mensagem);
foreach ($Result[3] as $ret):
// Eu não tenho ideia do que vou pôr onde está com espaço em branco
$this->Mensagem= str_replace($ret, '' , $this->Mensagem);
endforeach;
}
No caso eu tenho 3 itens em um array para cada identificador
produto_name e pedido_subtotal , como manter os três dados para o mesmo identificador, sabendo que essa quantidade de produtos e seu subtotal, são aleatórios.
Opa Gabriel valeu pela ajuda, nesse exemplo seu , a frase da string se repete 3 vezes pois o echo está dentro do for.
A questão que estou necessitando é dar um echo na frase e substituir os key pela quantidade de suas values
O meu exemplo não faz exatamente isto*?
(*é dar um echo na frase e substituir os key pela quantidade de suas values)
O lance de quantidade de seus values, seria algo como imprimir o índice do array? ou deduzi errado?
tem essa estrutura no foreach não sei se te ajuda:
foreach($pedidos as $key => $val){
Você pode dentro do laço ir alterando.
Um exemplo utilizando sua estrutura de dados:
<?php
$pedidos =
array(
array(
'Produto1'
,'200'
)
,array(
'Produto2'
,'50'
)
,array(
'Produto3'
,'180'
)