• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

LuRsT

Ultimo char de int

30 mensagens neste tópico

Boas, mais uma dúvida minha  :-[

Imaginem que eu tenho $var = 1234 e eu quero saber o ultimo char desse int, ou string tanto faz, eu quero e saber o ultimo char da $var que é 4.

$var = 1234 --> 4

$var = 837423973 -> 3

...

Alguma funcao?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Converte para string:

$newvar = (str) $var;
echo gettype($newvar); // se isto retornar STRING, este código funca
echo $newvar{strlen($newvar)-1};

:thumbsup:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes sempre fazer:

$var = str_split($var);
$len = count($var);
$len = $len--
echo $var[$len];

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Converte para string:

$newvar = (str) $var;
echo gettype($newvar); // se isto retornar STRING, este código funca
echo $newvar{strlen($newvar)-1};

:thumbsup:

Se for um int...

echo $newvar{$var/10};

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes sempre fazer:

$var = str_split($var);
$len = count($var);
$len = $len--
echo $var[$len];

Correcção:

$var = str_split($var);
$len = count($var);
$len--;
echo $var[$len];

Além disso, precisas na mesma de $var = (str) $var; no início. :P

Se for um int...

echo $newvar{$var/10};

Não percebi... :thumbsup:
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se for um int...

echo $newvar{$var/10};

Não percebi... :thumbsup:

>>> 1234 / 10
123
>>> 1234 % 10 # o resto da divisao de um inteiro
4
>>> 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

>>> 1234 / 10
123
>>> 1234 % 10 # o resto da divisao de um inteiro
4
>>> 

Eu sei o que é o %, mas ele usou o /, o que em PHP vai dar um float, neste caso 123.4. Mas sim, com o % é fazível :thumbsup:

EDIT:

var_dump(1234/10);

produz: float(123.4) :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

>>> 1234 / 10
123
>>> 1234 % 10 # o resto da divisao de um inteiro
4
>>> 

Eu sei o que é o %, mas ele usou o /, o que em PHP vai dar um float, neste caso 123.4. Mas sim, com o % é fazível :thumbsup:

EDIT:

var_dump(1234/10);

produz: float(123.4) :P

Off-Topic: Não postes mais, agora és leet.

djthyrax: Mensagens: leet

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Off-Topic: Não postes mais, agora és leet.

djthyrax: Mensagens: leet

LOL, temos pena. Quando chegar às 6338 passo a geek :thumbsup:

EDIT: Então e guru? Equivale a quantos posts? :biggrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se for um int...

echo $newvar{$var/10};

Não percebi... :P

>>> 1234 / 10
123
>>> 1234 % 10 # o resto da divisao de um inteiro
4
>>> 

Ups... caracter errado. Era isso mesmo. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pessoal vou experimentar e ja digo qual éque vou usar.

Se for um int...

echo $newvar{$var/10};

Não percebi... :P

>>> 1234 / 10
123
>>> 1234 % 10 # o resto da divisao de um inteiro
4
>>> 

Python?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Python?

Sim, ele usou python, mas o % também existe em PHP :D

Era a linguagem mais acessível para mostrar aqui um exemplo em Linux, mas o % é quase universal em todas as linguagens. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Era a linguagem mais acessível para mostrar aqui um exemplo em Linux

Cof cof:

[fundip]$ echo "<?php var_dump(1024%10);" > test.php

[fundip]$ php -q test.php

int(4)

[fundip]$

:P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se pelo que percebi, ao teres uma cadeia de números queres saber qual o ultimo numero certo ??

então por exemplo :

$numero = 145678;

$texto =  (string) $numero;

$last = substr($texto , strlen($texto)-1);

e ficas neste caso com o valor 8

Era isto ??

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Gurzi, foi isso que eu postei ali em cima. :P

$newvar = (str) $var;
echo $newvar{strlen($newvar)-1};

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto parece-me dar:

echo substr($num, -1);

LOL!! os outros a lutarem tanto e tu chegas aqui e dizes essa forma tão simples de se fazer isso :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto parece-me dar:

echo substr($num, -1);

LOL!! os outros a lutarem tanto e tu chegas aqui e dizes essa forma tão simples de se fazer isso :)

LOL :P
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me parece que seja mais simples fazer 2 conversões do que utilizar o resto da divisão de inteiros por 10, mas cada um faz como achar mais fácil.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sou todo ouvidos Triton.... diz la qual é mais rápido e porquê :) É que eu vou fazer isso várias vezes por isso se a diferenca de performance for alguma vale a pena mudar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sou todo ouvidos Triton.... diz la qual é mais rápido e porquê :) É que eu vou fazer isso várias vezes por isso se a diferenca de performance for alguma vale a pena mudar.

Não sei se fará muita diferença na performance, mas pelo método que o Bruno apresentou vais primeiro converter para uma string, depois achar o último elemento da string e depois ainda vais converter novamente a string para um inteiro.

Se dividires por 10 e achares o resto deve ser mais rápido e não precisas de andar a fazer conversões. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se fará muita diferença na performance, mas pelo método que o Bruno apresentou vais primeiro converter para uma string, depois achar o último elemento da string e depois ainda vais converter novamente a string para um inteiro.

Errado. Experimenta fazer isto: var_dump(substr((str) 1024, -1);. Ele vai-te informar que o resultado do substr() é uma string e apenas fazes uma conversão.

Resumindo:

Integer -> String -> Calcular a posição do ultimo caracter -> ler e devolver o ultimo caracter como string.

Se quiseres em integer, basta adicionar $var = (int) $var; ou $var = $var + 0; :)

Em relação à performance, não deves perder + que 1ms com este método :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora