Ir para conteúdo

POWERED BY:

Arquivado

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

Marcelo Diniz

[Resolvido] Formação de Variaveis

Recommended Posts

Pessoal, estou com uma dúvida aqui.

Como faço para formar uma variavel a partir de um array por exemplo.

 

eu tenho isso:


if($valorABC){
   echo "ABC";
}

if($valorCDE){
   echo "CDE";
}

if($valorFGH){
   echo "FGH";
}

e quero mais ou menos isso:


$arr = array("ABC", "CDE", "FGH");
foreach($arr as $key => $VL) {
   if($valor$VL){ // aqui q não esta dando certo o que quero
      echo $VL;
   }
}

Na linha onde eu coloquei um comentario é justamente o que não estou conseguindo fazer a variavel junto com o array.

Espero que com o exemplo de para entender o que estou com uma grande duvida.

 

Valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi direito o que você quer fazer...

 

Você quer concatenar os valores e formar um único valor?

 

Grande abraço, até...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim, o que eu quero é formar a variavel com o que tem no array, tipo a variavel é $valorABC, mas eu preciso que o ABC venha do array, entendeu?

Espero ter explicado um pouco melhor, mas caso não tenha entendido, fala que eu tento explicar mais ainda minha duvida....

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse if aío tá estranho não ta não??

você colocou.

if($valor$vl){
//executa instrução
}
O script está procurando algo com $valor$vl sendo que não tem essa variavel no script nem ao menos valor pra ela.

 

Não vai executar nada. alias Dá erro dessa forma.

mas assim vai:

$arr = array("ABC", "CDE", "FGH");
foreach($arr as $key => $VL) {  

echo $VL; 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos la. Vou colocar uma parte do código para poder ver se você entendem melhor o que eu quero.

 


//################## DI ################################################
	if (is_numeric($ValorDI) == 1) {
		mysql_select_db($database_localhost, $conn);
		$query_Select = "Select Valor from metas WHERE Cod_Cliente = '" . $Cod_Cliente . "' and Cod_Produto = 'DI' and Ordem = 0";
		$qr_Select = mysql_query($query_Select, $conn) or die(mysql_error());
		$row_qr_Select = mysql_fetch_assoc($qr_Select);

		$vDI  = $row_qr_Select['Valor'];		
		if (!(($vDI) == ($ValorDI)) == 1 ) {
			$QryUpdate ="Update metas Set Dt_Fim = Now(), Ordem = 1 WHERE Cod_Cliente = '" . $Cod_Cliente . "' and Cod_Mandatario = " . $Cod_Mandatario . " and Cod_Produto = 'DI' and Ordem = 0";
			//$QryUpdate ="Update metas Set Dt_Fim = Now(), Ordem = 1 WHERE Cod_Cliente = '" . $Cod_Cliente . "' and Cod_Produto = 'DI' and Ordem = 0";			
			mysql_query($QryUpdate, $conn);

			$QryInsert = "Insert into metas (Rec_Deleted, Rec_Edit, Rec_Notes, Cod_Produto, Periodo, Ordem, Cod_Mandatario, Dt_Inicio, Dt_Fim, Valor, Cod_Cliente, User, Dt_Modificacao) 
						  VALUES (0, 0, NULL, 'DI', NULL, 0, ".$Cod_Mandatario.", DATE_ADD(Now(), INTERVAL 1 DAY), NULL, ".$ValorDI.", '".$Cod_Cliente."', '".$_SESSION['login']."', Now())";			
			mysql_query($QryInsert, $conn);		
		}	
	}

//################## DOL ################################################
	if (is_numeric($ValorDOL) == 1) {
		mysql_select_db($database_localhost, $conn);
		$query_Select = "Select Valor from metas WHERE Cod_Cliente = '" . $Cod_Cliente . "' and Cod_Produto = 'DOL' and Ordem = 0";
		$qr_Select = mysql_query($query_Select, $conn) or die(mysql_error());
		$row_qr_Select = mysql_fetch_assoc($qr_Select);

		$vDOL  = $row_qr_Select['Valor'];		
		if (!(($vDOL) == ($ValorDOL)) == 1) {
			$QryUpdate ="Update metas Set Dt_Fim = Now(), Ordem = 1 WHERE Cod_Cliente = '" . $Cod_Cliente . "' and Cod_Mandatario = " . $Cod_Mandatario . " and Cod_Produto = 'DOL' and Ordem = 0";
			mysql_query($QryUpdate, $conn);
			
			$QryInsert = "Insert into metas (Rec_Deleted, Rec_Edit, Rec_Notes, Cod_Produto, Periodo, Ordem, Cod_Mandatario, Dt_Inicio, Dt_Fim, Valor, Cod_Cliente, User, Dt_Modificacao) 
						  Values (0, 0, NULL, 'DOL', NULL, 0, ".$Cod_Mandatario.", DATE_ADD(Now(), INTERVAL 1 DAY), NULL, ".$ValorDOL.",'".$Cod_Cliente."', '".$_SESSION['login']."', Now()) ";
			mysql_query($QryInsert, $conn);
		
		}
	
	}

/*
e ainda tem mais uns para baixo, mas se for reparara o DI, e o DOL é praticamente igual, o que muda é somente o DI e o DOL, que esta nas variaeis, entre outros como nos inserts .*/

 

 

 

o que eu estava pensando para melhorar seria algo assim

 


	$arr = array("DI", "DOL", "FRC", "IND", "ODO", "ODI", "OID", "USD", "PAP", "OUT");
	mysql_select_db($database_localhost, $conn);
	foreach($arr as $key => $VL) {
		if (is_numeric($Valor$VL) == 1) {			
			$query_Select = "Select Valor from metas WHERE Cod_Cliente = '" . $Cod_Cliente . "' and Cod_Produto = '".$VL."' and Ordem = 0";
			$qr_Select = mysql_query($query_Select, $conn) or die(mysql_error());
			$row_qr_Select = mysql_fetch_assoc($qr_Select);
	
			$v$VL  = $row_qr_Select['Valor'];		
			if (!(($v$VL) == ($Valor$Vl)) == 1 ) {
				$QryUpdate = "Update metas Set Dt_Fim = Now(), Ordem = 1 WHERE Cod_Cliente = '".$Cod_Cliente."' and Cod_Mandatario = ".$Cod_Mandatario." and Cod_Produto = '".$VL."' and Ordem = 0";
				//$QryUpdate ="Update metas Set Dt_Fim = Now(), Ordem = 1 WHERE Cod_Cliente = '" . $Cod_Cliente . "' and Cod_Produto = 'DI' and Ordem = 0";			
				mysql_query($QryUpdate, $conn);
	
				$QryInsert = "Insert into metas (Rec_Deleted, Rec_Edit, Rec_Notes, Cod_Produto, Periodo, Ordem, Cod_Mandatario, Dt_Inicio, Dt_Fim, Valor, Cod_Cliente, User, Dt_Modificacao) 
							  VALUES (0, 0, NULL, '".$VL."', NULL, 0, ".$Cod_Mandatario.", DATE_ADD(Now(), INTERVAL 1 DAY), NULL, ".$Valor$VL.", '".$Cod_Cliente."', '".$_SESSION['login']."', Now())";
				mysql_query($QryInsert, $conn);		
			}
		}	
	}

 

agora imagino que fique mais facil de vcs visualizarem o que eu preciso.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso aqui não te serve?

 

<?php
$arr = array("ABC", "CDE", "FGH");
$teste=array();
foreach($arr as $key => $VL) {  
	array_push($teste,$VL);
	

}
foreach($teste as $letra){
echo $letra."<br>";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew Mario, mas não seria isso, pois o array_push adiciona elementos no final do array, e não seria isso que eu quero.

 

 

se perceber no código que eu postei seria formar a variavel a partir de um array.

 

hoje eu tenho que escrever as variaveis na mão assim

$variavelDI;
$variavelDOL;
$variavelFRC;
$variavelIND;
$variavelODO;
$variavelODI;
//e por ai vai percebe

eu pensei em mudar isso para

 

$arr = array("DI", "DOL", "FRC", "IND", "ODO", "ODI", "OID", "USD", "PAP", "OUT");
foreach($arr as $key => $VL) {
   $variavel$VL;
}

Espero ter tentado minimizado o exemplo e ter explicado melhor o que quero.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso, imagino que seja isso mesmo que eu queira.....AEEE, mas não tem como, dai me ferrei lindo, sera que não tenho nenhuma saida, ou vou ter que ficar com esse codigo aparentemente "sujo"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja tentou trabalhar com function ?

 

você faz uma function, com a rotina que eh igual para todas essas variaveis, e manda oque varia por parametro..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem como você "fazer" variáveis.

 

Tem sim Dee, chama-se variáveis variáveis:

 

$valorABC = true;
$valorCDE = false;
$valorFGH = true;

$arr = array("ABC", "CDE", "FGH");

foreach( $arr as $VL ){
$nome_var = 'valor' . $VL;

if( $$nome_var ){
	echo $VL , PHP_EOL;
}
}

 

Perceba os dois $ em $nome_var, são eles que fazem o que você precisa, a saída será:

ABC

FGH

 

Variáveis Variáveis

Compartilhar este post


Link para o post
Compartilhar em outros sites

então William, pensei nisso, mas não da, pois para isso terei que mudar o código inteiro dessa tela que estou fazendo. E o problema que não é pouca coisa para ser feito.

 

resumindo, estou ferrado..........rsrsrs.........

 

João, acho que é isso mesmo que eu preciso, vou ver aqui se da certo...

 

E muito obrigado galera, mas ainda não sei.....vamos ver e posto se é isso mesmo.......

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, mas melhor refazer uma parte, doque fazer mais gambiarra, ou fazer um loop desnecessario.. criando ainda mais variaveis, gastando ainda mais memoria... veja, a ideia eh essa

 

<?php

if (is_numeric($ValorDI) == 1)
	fazTudo( 'DI', $ValorDI );
if (is_numeric($ValorDOL) == 1)
	fazTudo( 'DOL', $ValorDOL );
	
	
function fazTudo( $var, $valor )
{
	mysql_select_db($database_localhost, $conn);
	$query_Select = "Select Valor from metas 
		WHERE Cod_Cliente = '" . $Cod_Cliente . "' 
		and Cod_Produto = '{$var}' and Ordem = 0";
		
	$qr_Select = mysql_query($query_Select, $conn) or die(mysql_error());
	$row_qr_Select = mysql_fetch_assoc($qr_Select);

	$vDOL  = $row_qr_Select['Valor'];               
		if (!(($vDOL) == ($valor)) == 1) {
		$QryUpdate ="Update metas Set 
			Dt_Fim = Now(), 
			Ordem = 1 
			WHERE Cod_Cliente = '" . $Cod_Cliente . "' 
			and Cod_Mandatario = " . $Cod_Mandatario . " 
			and Cod_Produto = '{$var}' and Ordem = 0";
		mysql_query($QryUpdate, $conn);

		$QryInsert = "Insert into metas 
				(Rec_Deleted, Rec_Edit, Rec_Notes, Cod_Produto, Periodo, Ordem, 
				Cod_Mandatario, Dt_Inicio, Dt_Fim, Valor, Cod_Cliente, User, Dt_Modificacao) 
			Values 
				(0, 0, NULL, '{$var}', NULL, 0, ".$Cod_Mandatario.", DATE_ADD(Now(), 
				INTERVAL 1 DAY), NULL, ".$valor.",'".$Cod_Cliente."', 
				'".$_SESSION['login']."', Now()) ";
		mysql_query($QryInsert, $conn);
	}
}
depois melhora isso.. um 'fazTudo' eh uma coisa bem estranha..

Compartilhar este post


Link para o post
Compartilhar em outros sites

À Todos Um MUITO OBRIGADO.

 

é uma Gambiarra, eu sei, mas já esta um pouco melhor pelo meu ponto de vista, pois quando eu tiver tempo $$ na negociação com o cliente eu vou refazer o sistema inteiro, pois como eu disse peguei isso agora e aqui as coisas estão de mal a pior....hehe

 

Mas pelo que eu precisava era exatamente o que o João passou, variaveis variaveis.

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.