Ir para conteúdo

POWERED BY:

Arquivado

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

crishenrique86

Valores variaveis

Recommended Posts

Boa tarde!

 

 

Estou com um problema que é:

 

Preciso pegar dois valores que se encontram em functions e vetores diferentes.

ambos valores fazem parte do mesmo grupo(complemento)

Compartilhar este post


Link para o post
Compartilhar em outros sites

adicione return $variavel no final da function para pegar o valor retornado,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funções realizam uma ação e podem, ou não, possuir um retorno.

 

Sua aplicação deve gerenciar o que será feito com os valores retornados. Logo, a sua aplicação deve unir as duas variáveis.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não consegui entender, poste o codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

para ser mais exato

 

tenho varios boletos

 

onde um boleto tem uma function T que pega o numero do boleto e a outra function U pega a data do credito desse boleto
a leitura desses boletos esta em uma rotina guardada em um vetor

preciso que pegue o numero do boleto e a data baixa da mesma linha

 

 

se eu mudo para function T eu consigo pegar so o numero do boleto e a U é o inverso.....queria ate postar o codigo aki mas muitas gente pode reclamar, mas iria mostrar melhor oq eu faço

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelas minhas contas deve ser mais ou menos assim:

 

 

 

$n_boleto = getNumeroBoleto($cpf);
$data_credito = getDataCredito($n_boleto);
 
 
ou
 
 
$boleto = gerarBoleto($cpf);
 
echo $boleto['numero'] .' - '. $boleto['data_credito'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

basta retornar os valores.. qual a dificuldade ?

 

 

function Foo()
{
    $valor1 = 'A';
    $valor2 = 'B';
 
    return array( 'valor1' => $valor1, 'valor2' => $valor2 );
}

 

ou

 

 

function Foo()
{
    $valor1 = 'A';
    $valor2 = 'B';
 
    return $valor1 . '/' .  $valor2;
}

 

 

[off]

 

 

Ninguém fará o seu serviço.. por isso não tem nada a ver postar o códigos do sistema.

 

Aliás, isso não é nada legal.. vc está expondo o seu cliente... falha grave de privacidade e segurança..

Você é o segundo que expõe dados particulares dessa forma em 1 semana aqui no forum. O outro foi um cara que trabalha para o governo e nem se importou com o que estava fazendo.

Depois não sabe porque site é hackeado ou porque perde emprego.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinon,

 

mas ai vc colocou para pegar os valores de uma function so,

 

um exemplo:

 

um boleto e composto por uma parte T(Dados simples) e U (Dados detalhados)

mas nem todos os boletos tem as duas parte, tem somente a T

 

no arquivo retorno.php

ele trabalho o arquivo anexado do banco com duas functions, a T e U, sendo q a T esta em uma linha (Vetor) e a U abaixo em outro vetor.....obrigatoriamente as duas pegam seus dados e montam o relatorio do boleto (Parte T e U)

 

 

T

U

----

T

U

-----

 

 

T = tem o numero do boleto q eu preciso

U= tem a data do credito

 

So estou conseguindo pegar um ou outro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Organiza as idéias e exponha de forma clara o que você precisa.

 

Adicione alguns print_r() no seu código sobre as variáveis, veja o que você tem e poste uma adaptação, com dados fictícios para que posamos ter com o que trabalhar.

 

Por exemplo:

 

no arquivo retorno.php

ele trabalho o arquivo anexado do banco com duas functions, a T e U, sendo q a T esta em uma linha (Vetor) e a U abaixo em outro vetor.....obrigatoriamente as duas pegam seus dados e montam o relatorio do boleto (Parte T e U)

 

Isso me dá a entender que você tem uma matriz multidimensional com vários "sub-arrays" de dois índices, contendo as informações que as funçoes usarão para produzir o que precisa.

 

Mas por causa das desorganização de idéias, não tenho certeza se é isso. Pois, se for, é coisa simples, que um foreach resolve mole, mole.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno, é o seguinte;

Objetivo é: Ler um arquivo de retorno do banco do brasil para dar baixa no bd.

Nesse arquivo de retorno consta todos os dados dos boletos pagos, sendo que, cada boleto e formado por dois tipos de informações

("T" que são dados simples e "U" dados mais completos, porem o que tem em um não tem no outro, sendo um continuação do outro)

 

 

1-Tenho um arquivo index.php - Onde selecione um arquivo .ret do banco do brasil e dou um upload

2-O arquivo retornocnab240.php faz a separação das strings por estarem tudo junto.

Ele faz a separação atraves de 2 functions colocando em dois vetores diferentes $vlinha, function tipo "T" e function tipo "U"

 

Exemplo de como fica:

 

BOLETO-1

 

function T

$vlinha()

$vlinha['nosso_numero']

$vlinha['valor']

$vlinha['juros']

 

return $vlinha

_________________

 

function U

$vlinha()

$vlinha['data_vencimento']

$vlinha['data_ocorrencia']

$vlinha['data_credito']

 

return $vlinha

 

Resultado:

 

Eu preciso somente do "NOSSO_NUMERO" e "DATA_BAIXA"

Se eu dou o seguinte print

 

if(empty($vlinha['nosso_numero'])) {
$vlinha['nosso_numero'] = "0";
}
if(empty($vlinha['data_credito'])) {
$vlinha['data_credito'] = "00/00/0000";
}
echo "'".$vlinha['nosso_numero']."''--''".$vlinha['data_credito']."'";
-------------------------------------------
'886598007642 ''--''00/00/0000'

 

//Aki ele pega o detalhe T que tem o "nosso_numero" mas não tem a data credito que esta na U, pq esta e o vetor do T

 


'0''--''04/07/2013'

 

 

//Aki ele não pega o detalhe T que tem o "nosso_numero" mas tem a data credito que esta na U, pq esta é o vetor do U

 


'88659800000045824 ''--''00/00/0000'

'0''--''04/07/2013'

'88659800000045914 ''--''00/00/0000'

'0''--''04/07/2013'

---------------------------------------------------
Mas eu preciso pegar o "nosso_numero" e a "data_credito" do mesmo boleto para dar um UPDATE no bd fazendo isto com todos os boletos
$sql_update_financeiro = "UPDATE historico_associado SET bolpag='1', boldatpag='$vlinha['data_baixa']' WHERE bolcod='$vlinha['nosso_numero']'";
Acho deu para ser um pouco mais claro....talvez tenha ficado um pouco grande a explicação mas era o unico jeito....acredito que seja besteira masestou penando com isto.

Espero que possam me ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda está confuso, mas já deu pra entender melhor.

Você precisa ler dados de um arquivo de informações do Banco do Brasil após upload deste. Ponto!

Você já separou as rotinas de análise para que cada uma cuide de uma cuide de uma determinada parte do arquivo de informações. Ponto!

Agora esses códigos:

function T
$vlinha()
$vlinha['nosso_numero']
$vlinha['valor']
$vlinha['juros']

return $vlinha

function U
$vlinha()
$vlinha['data_vencimento']
$vlinha['data_ocorrencia']
$vlinha['data_credito']

return $vlinha

 

Não dizem muita coisa. A declaração de uma função que faça algo com alguma informação e retorne algo após feito é:

 

 

function doSomething( $withThis ) {
 
   return $somethingElse;
}

 

No seu caso seria algo mais ou menos assim:

 

 

function readTData( $contents ) {
 
    $t = array();
 
    // Do something
 
    return $t
}

 

E o mesmo para a leitura dos "dados U".

 

Isso é o seu componente, sua mini biblioteca ou seja lá como queira chamar. Mas o ponto importante é que apenas UMA parte da Aplicação.

 

A segunda parte é quem USA essas funções. Após o upload, o fluxo da Requisição vai para algum lugar do seu código. Nesse ponto você vai ler o conteúdo do arquivo enviado para uma string e informar essa string para cada uma das funções de análise, armazenando seus respectivos retornos em variáveis:

 

 

$contents = file_get_contents( 'path/to/upload/file' );
 
$TData = readTData( $contents );
$UData = readUData( $contents );

 

Por causa do return de cada função, aquilo que aconteceu dentro das funções "sai pra fora delas" e você armazena em uma variável para trabalhar.

 

Nota: Esse armazenamento só é necessário porque versões anteriores ao PHP 5.4 não permitem que você faça:

 

 

$nossoNumero = readTData( $contents );['nosso_numero'];

 

E mesmo que pudesse isso deve gerar uma sobrecarga enorme, por invocar a função de análise diversas vezes.

 

Enfim....

 

Depois do upload e da leitura dos dados para uma variável é que voê entra com o uso dos dados, que seria o seu foreach.

 

Agora leia, tente de novo e vejamos se consegue.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bruno,

As functions esta da seguinte forma:

 

 

protected function processarDetalheT($linha) {
$vlinha = array();
$vlinha["banco"] = substr($linha, 1, 3); //Código do Banco na Compensação
$vlinha["dv_agencia"] = substr($linha, 23, 1); //Dígito Verificador da Agência
$vlinha["conta"] = substr($linha, 24, 12); //Número da Conta Corrente
$vlinha["dv_conta"] = substr($linha, 36, 1); //Dígito Verificador da Conta
$vlinha["dv"] = substr($linha, 37, 1); //Dígito Verificador da Ag/Conta
$vlinha["nosso_numero"] = substr($linha, 38, 20); //Identificação do Título
return $vlinha;
}

 

protected function processarDetalheU($linha) {
$vlinha = array();
$vlinha["banco"] = substr($linha, 1, 3); //Código do Banco na Compensação
$vlinha["lote"] = substr($linha, 4, 4); //Lote de Serviço
$vlinha["registro"] = substr($linha, 8, 1); //Tipo de Registro
$vlinha["sequencial"] = substr($linha, 9, 5); //Nº Sequencial do Registro no Lote
$vlinha["segmento"] = substr($linha, 14, 1); //Cód. Segmento do Registro Detalhe
$vlinha["servico_CNAB"] = substr($linha, 15, 1); //Uso Exclusivo FEBRABAN/CNAB
$vlinha["cod_mov"] = substr($linha, 16, 2); //Código de Movimento Retorno
$vlinha["acrescimos"] = $this->formataNumero(substr($linha, 18, 15)); //Juros / Multa / Encargos
$vlinha["valor_desconto"] = $this->formataNumero(substr($linha, 33, 15)); //Valor do Desconto Concedido
$vlinha["valor_abatimento"] = $this->formataNumero(substr($linha, 48, 15)); //Valor do Abat. Concedido/Cancel.
$vlinha["IOF"] = $this->formataNumero(substr($linha, 63, 15)); //Valor do IOF Recolhido
$vlinha["valor_pago"] = $this->formataNumero(substr($linha, 78, 15)); //Valor Pago pelo Sacado
$vlinha["valor_liquido"] = $this->formataNumero(substr($linha, 93, 15)); //Valor Líquido a ser Creditado
$vlinha["data_ocorrencia"] = $this->formataData(substr($linha, 138, 8)); //Data da Ocorrência
$vlinha["data_credito"] = $this->formataData(substr($linha, 146, 8)); //Data da Efetivação do Crédito
return $vlinha;
}
COMO DISSE,
PRECISO PEGAR SOMENTE O "NOSSO_NUMERO" QUE ESTA NO DETALHE (T) E A DATA_CREDITO QUE ESTA NA DETALHE (U)
DO MESMO BOLETO.... FAZENDO BOLETO POR BOLETO
O RECEBIMENTO DAS INFORMAÇÕES PARA O ECHO ESTA ASSIM:
function linhaProcessada($self, $numLn, $vlinha) {
if($vlinha) {
if($vlinha["registro"] == RetornoCNAB240::HEADER_ARQUIVO)
echo "<b>".$vlinha['nome_empresa']."</b><br />";
//O registro detalhe U são dados adicionais do registro de pagamento
//e não necessariamente precisa ser usado.
//Pode ser que o arquivo de retorno não tenha o registro detalhe separado em
//duas linhas (T e U). Assim, nestes casos, pode-se fazer apenas um
//if($vlinha["id_registro"] == RetornoCNAB240::DETALHE) {
else if($vlinha["registro"] == RetornoCNAB240::DETALHE && $vlinha["segmento"] == "T") {
if(empty($vlinha['nosso_numero'])) {
$vlinha['nosso_numero'] = "0";
}
if(empty($vlinha['data_credito'])) {
$vlinha['data_credito'] = "00/00/0000";
}
echo "'".$vlinha['nosso_numero']."''--''".$vlinha['data_credito']."'";
echo "<br><br>";
}
ME DA ESSA FORÇA AI CARA.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz, seu código tá me assustando, mas eu vi uma coisa bastante comum de quem programa Orientado a Objetos a pouco tempo.

processarDetalheT() e processarDetalheU() são métodos de uma classe e não foram declarados como estáticos. Dessa forma você deve instanciar o objeto da classe para poder usá-los:

No exemplo de código que dei no post #14, seria algo como:

class MyClass {
 
    protected functon processarDetalheT( $linha ) {}
}
 
$myClass = new MyClass;
 
$TData = $myClass -> processarDetalheT( $linha  );


Supndo que $linha seja a string lida do arquivo enviado, claro.

Com isso você já será capaz de ler $TData['nosso_numero'] e prosseguir com as verificações e usos devidos.

E o esquema para os Detalhes "U" é o mesmo. :thumbsup:

 

Toma que o filho é teu Bruno! rsrsrs


:upset:

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.