Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

olafercocam

Como dar str_replace em um array

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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'
	)
);

$string_start = 'Olá seus itens do pedido são {PRODUTO_NOME} R$ {PEDIDO_SUBTOTAL}';
$string = '';

foreach($pedidos as $pedido){
	//Agora cada $pedido tem 2 indices, 0 , 1
	// Onde:
	//Nome do Produto
	$string = str_replace('{PRODUTO_NOME}', $pedido[0], $string_start);
	
	//Vlr do Produto
	echo str_replace('{PEDIDO_SUBTOTAL}', $pedido[1], $string) . '<br />';
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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){

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.