Ir para conteúdo
Fórum Script Brasil
  • 0

Transformar resultado de contador em Variavel


Endor

Pergunta

Boa Noite, amigos.

Preciso divir o mês em pedaços. Alguns de 4 dias, outros de 6 dias.

Para isso estou usando o for ($contador=3;$contador<=30;$contador+=6)

Usei um separador para apresentar os resultados {echo $contador."-";}

Minha idéia era depois pegar esses valores através de uma substring //// substr($data,0,2);

E aí estou com o problema: Como fazer para saber se antes do "-" tem um número ou dois?

Um exemplo do resultado é : 8-14-20-26-

Preciso desmembrar em variáveis:

$a == "8";

$b== "14";

$c== "20"; e assim por diante.

Aceito sugestões e instruções.

Abraços.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Olá FIT, Boa Noite!

Obrigado pela ajuda.

Eu já estava usando o explode, bem como split, mas não obtive o resultado desejado.

No caso do explode (conforme abaixo), me retorna o número posterior ao 26, ou seja, 32 no array[0].

Com certeza devo estar errando em algum lugar, mas...onde.

for ($contador=2; $contador<=30; $contador+=6)

{echo $contador."-"; }

$contador=="2-8-14-20-26-";

$explode = explode("-", $contador);

$a = $explode[0];

$b = $explode[1];

$c = $explode[2];

$d = $explode[3];

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0
Olá FIT, Boa Noite!

Obrigado pela ajuda.

Eu já estava usando o explode, bem como split, mas não obtive o resultado desejado.

No caso do explode (conforme abaixo), me retorna o número posterior ao 26, ou seja, 32 no array[0].

Com certeza devo estar errando em algum lugar, mas...onde.

for ($contador=2; $contador<=30; $contador+=6)

{echo $contador."-"; }

$contador=="2-8-14-20-26-";

$explode = explode("-", $contador);

$a = $explode[0];

$b = $explode[1];

$c = $explode[2];

$d = $explode[3];

Abraços.

Vamos por partes

primeiro não seria melhor você jogá-los em um array?

outra para saber quantos numeros(caracteres) tem uma string utilize a funçao strlen($caracter) para conta-los

não entendir muito bem o que voce queria não mais vou tentar algo assim

<?php

function Retorno($Dados)

{

$d=explode("-", $Dados); //transforma os dados obtidos em um array

$N=count($d); //contando quantos elementos tem o array

for($i=0; $i<$N; $i++)

{

$Ret.=$d[$i]; //junção dos dados obtidos no explode

}

return $Ret;

}

echo "D = ".Retorno($contador="2-8-14-20-26-");

?>

vai retorná os dados sem os - voce poderá adicionar um verificador dentro do for para ver se é de dois digitos ou so de um

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia, Richayron!

Obrigado pelo retorno.

Você chegou extamente no ponto:

Os resultados que obtenho do FOR, eles vêem sem o "-". Eu concatenei o traço com finalidade de ficar mais fácil

encontrar com uma substring Exemplo: $d = substr($contador,0,2); Então me dei conta de que nos resultados iniciais os números não são duplos (Mês de 31 dias - se começar a contagem a partir do dia 1, terei: 1, 7, 13, 19, 25, 31.)

Porque eu preciso disso? Porque eu posso precisar começar essa escala em qualquer dia do mês.

Pode ser no dia 1, como no dia 10 ou mesmo dia 23, etc. Então preciso saber quantas destas escalas cabem no restante dos dias que faltam, ou mesmo se o restante dos dias é suficiente para preencher a escala de 6dias.

Fiquei feliz quando conheci a função explode, porque era o que eu precisava. Ela me daria o valor (em array), eu trabalharia este dado.

Mas enquanto não consigo usar outra modo de raciocínio, vou usar uma porção de switch, if e while para obter o resultado.

Quando mencionou usar a strlen, foi minha idéia, pois eu contaria primeiramente os traços

substr_count($contador,"-") e sabendo quantos traços eu teria, então faria a contagem de digitos entre cada traço.

Mas não consegui efetuar a montagem do processo.

Se puder me ajudar, agradeço imensamente.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0
Bom dia, Richayron!

Obrigado pelo retorno.

Você chegou extamente no ponto:

Os resultados que obtenho do FOR, eles vêem sem o "-". Eu concatenei o traço com finalidade de ficar mais fácil

encontrar com uma substring Exemplo: $d = substr($contador,0,2); Então me dei conta de que nos resultados iniciais os números não são duplos (Mês de 31 dias - se começar a contagem a partir do dia 1, terei: 1, 7, 13, 19, 25, 31.)

Porque eu preciso disso? Porque eu posso precisar começar essa escala em qualquer dia do mês.

Pode ser no dia 1, como no dia 10 ou mesmo dia 23, etc. Então preciso saber quantas destas escalas cabem no restante dos dias que faltam, ou mesmo se o restante dos dias é suficiente para preencher a escala de 6dias.

Fiquei feliz quando conheci a função explode, porque era o que eu precisava. Ela me daria o valor (em array), eu trabalharia este dado.

Mas enquanto não consigo usar outra modo de raciocínio, vou usar uma porção de switch, if e while para obter o resultado.

Quando mencionou usar a strlen, foi minha idéia, pois eu contaria primeiramente os traços

substr_count($contador,"-") e sabendo quantos traços eu teria, então faria a contagem de digitos entre cada traço.

Mas não consegui efetuar a montagem do processo.

Se puder me ajudar, agradeço imensamente.

Abraços.

veja se isso lhe serve

function Dia($data) //formato do msyql padrão ano-mes-dia

{

$ds=explode("-",$data);

$Dia=$ds[2]; //dia

$Mes=$ds[1]; //mes

$Ano=$ds[0]; //ano

$UltimoDiaMes= cal_days_in_month(CAL_GREGORIAN, $Mes, $Ano); //pegando o ultimo dia do mes

for($i=0; $Dia<$UltimoDiaMes; $Dia+=6)

{

$Dias[$i]=$Dia;

$i++;

}

return $Dias;

}

print_r(Dia(date('Y-m-d'))); //aqui vai imprimir o array retornado pela função

ao que entendir você quer adicionar 6 ao numero do mes que vem indefinido sendo que não pode estora o ultimo dia do mes

qualquer duvida estamos até mais.

Link para o comentário
Compartilhar em outros sites

  • 0

Amigos, o meu caso é o seguinte...

eu tenho uma tabela sql com as seguintes informações, ID e NOME...

então exemplificando:

<?

$nome[1] = João;

$nome[2] = Maria;

$nome[3] = Raimunda;

echo "$nome[1]";

?>

no navegador vai aparecer o nome João...

porém eu quero em determinados pontos da pagina exibir outros nomes, mas sem fazer uma nova busca... tipo, no banco de dados eu sei que João recebe a id=1, Maria recebe a id=2 e Raimunda recebe a id=3... logo se eu escrever em qualquer lugar da pagina <? echo "$nome[3]"; ?> como já declarei a variavel $nome[3] = Raimunda; vai aparecer o nome raimunda... porém, eu tenho 100 nomes pra mostrar... não quero criar uma variael para cada nome, usarei apenas a variavel $nome[aqui dentro a id do nome]... Não sei se estou complicando voces com o que quero mas enfim, se puderem me ajudar o que eu quero é um script que gere aquelas variaveis $nome pra eu apenas modificar o valor dos [] e chamar o valor correspondente... Desde já, obrigado...

Link para o comentário
Compartilhar em outros sites

  • 0

Bem, vou responder aqui mesmo então... o que você precisa fazer é ao executar a consulta no banco, fazer um for e para cada registro retornado você coloca o nome dentro do array no índice com texto do ID:

<?php

    // Habilita todas mensagens de erros que possa acontecer
    ini_set('display_errors', 1);
    error_reporting(E_ALL);

    // Conexão ao banco
    mysql_connect('servidor', 'usuario', 'senha') or die(mysql_error());
    mysql_select_db('teste') or die(mysql_error());
    
    // Executa consulta no banco
    $sql = "SELECT id, nome FROM pessoas";
    $rs = mysql_query($sql) or die(mysql_error());
    
    // Declara o array a ser usado
    $nome = Array();
    
    // Monta o array com as informações
    while($dados = mysql_fetch_assoc($rs)){
        $nome[$dados['id']] = $dados['nome'];
    }
    
    // Imprime todo o array nome para visualizar como ficou os dados
    print_r($nome);
    
?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...