Convertendo um número inteiro em uma string no PHP


501

Existe uma maneira de converter um número inteiro em uma string no PHP?


8
O PHP é digitado livremente. O que era um inteiro uma vez, também pode ser uma string, por exemplo, quando você echoo usa (usado no chamado contexto de string ).
— hakre

2
@hakre yes php é vagamente digitado e ecoar imprimiria o valor no contexto da string. Mas isso não altera o tipo de dados de uma variável internamente. Portanto, strval ($ variável) está correto.
— vivek_23 31/08/2015

@ Livek: strval()não muda $variableinternamente nem.
— hakre 31/08/2015

2
Eu quis dizer $ variable = strval ($ variable);
— vivek_23

Respostas:


781

Você pode usar a strval()função para converter um número em uma string.

Do ponto de vista da manutenção, é óbvio o que você está tentando fazer, em vez de outras respostas mais esotéricas. Claro, isso depende do seu contexto.

$var = 5;

// Inline variable parsing
echo "I'd like {$var} waffles"; // = "I'd like 5 waffles

// String concatenation 
echo "I'd like ".$var." waffles"; // I'd like 5 waffles

// Explicit cast 
$items = (string)$var; // $items === "5";

// Function call
$items = strval($var); // $items === "5";

2
Bom ponto. Eu joguei algumas funções mysql_escape_string lá para limpá-lo.
— 23410 Chris Thompson

6
editado porque mysql_escape_string está obsoleto porque ignora charset.
— Kzqai

7
@Kzqai para qualquer um que olha para este exemplo para tentar evitar ataques de injeção, eu diria que abandonar suas tentativas de escapar strings e usar declarações preparadas
— chacham15

22
Após 5 anos, finalmente removi o exemplo do SQL, pois era desnecessário responder à pergunta e introduzi confusão.
— 21815 Chris Thompson

3
Atenção!! Se você passar certos números, o php os arredondará ao converter para string: strval(0.999999997)retorna 1.
— Danielson317 26/10/18

86

Há muitas maneiras de fazer isso.

Dois exemplos:

 $str = (string) $int;
 $str = "$int";     

Veja o Manual do PHP sobre Tipos de Malabarismo para mais.


25
@Jazzerus Se $ var for igual a 0 (zero), isso se tornará uma string vazia. Problemático.
— Simon Forsberg

5
Converter 0para ""pode não ser ruim; realmente depende da aplicação. Dito isto, você faz um bom argumento.
— WNRosenberg

2
$ f = 0; eco "$ f"; funciona bem comigo, o zero permanece zero. Portanto, considero "$ var" uma resposta inteligente / útil. A execução de 9999999 loops (string) leva 0,4046459 ... seg, enquanto "$ var" leva 0,3725229 ... sem diferença.
— Melsi

45
$foo = 5;

$foo = $foo . "";

Agora $fooé uma string.

Mas você pode se acostumar com a transmissão. Como a transmissão é a maneira correta de realizar algo desse tipo:

$foo = 5;
$foo = (string)$foo;

Outra maneira é encapsular entre aspas:

$foo = 5;
$foo = "$foo"

Tão incrivelmente estranho que nós dois escolhemos 5. Além disso, + é java.
— karim79

Eu acho que você está misturando sua sintaxe de concatenação entre idiomas.
— jason

6
Eu me inclinaria para o elenco, simplesmente porque deixa suas intenções muito claras. A transmissão tem um e apenas um objetivo: alterar tipos. Os outros exemplos podem quase parecer erros, em alguns contextos.
— 24540 Frank Farmer

Trabalhou para mim .. thnx muito
— zeetit

10

Existem várias maneiras de "converter" um número inteiro em uma string no PHP.

A maneira tradicional de ciência da computação seria converter a variável como uma string:

$int = 5;
$int_as_string = (string) $int;
echo $int . ' is a '. gettype($int) . "\n";
echo $int_as_string . ' is a ' . gettype($int_as_string) . "\n";

Você também pode aproveitar a conversão implícita de tipos e a interpolação de strings do PHP:

$int = 5;
echo $int . ' is a '. gettype($int) . "\n";

$int_as_string = "$int";
echo $int_as_string . ' is a ' . gettype($int_as_string) . "\n";

$string_int = $int.'';
echo $int_as_string . ' is a ' . gettype($int_as_string) . "\n";

Finalmente, semelhante ao acima, qualquer função que aceite e retorne uma string pode ser usada para converter e inteiro. Considere o seguinte:

$int = 5;
echo $int . ' is a '. gettype($int) . "\n";

$int_as_string = trim($int);
echo $int_as_string . ' is a ' . gettype($int_as_string) . "\n";

Eu não recomendaria a opção final, mas já vi código que dependia desse comportamento, então pensei em repassá-lo.


9

Todas essas respostas são ótimas, mas todas retornam uma string vazia se o valor for zero.

Tente o seguinte:

    $v = 0;

    $s = (string)$v ? (string)$v : "0";

2
Observe que a pergunta diz especificamente 'converter um número inteiro', não um float. :)
— Microprocessador Cat

1
Corrija o erro, por favor. O formato correto deve ser: $ s = (string) $ v? (string) $ v: "0";
— nintyfan

7

Usar:

$intValue = 1;
$string = sprintf('%d', $intValue);

Ou pode ser:

$string = (string)$intValue;

Ou:

settype(&$intValue, 'string');

4

Existem várias formas de conversão possíveis:

$input => 123
sprintf('%d',$input) => 123
(string)$input => 123
strval($input) => 123
settype($input, "string") => 123

4

Você pode usar o operador de período e concatenar uma string para ele (e será do tipo convertido em uma string):

$integer = 93;
$stringedInt = $integer . "";

Ou, mais corretamente, você pode apenas digitar converter o número inteiro em uma string:

$integer = 93;
$stringedInt = (string) $integer;

0

Como as respostas aqui demonstram bem, sim, existem várias maneiras. No entanto, no PHP, você raramente precisa fazer isso. A "maneira dogmática" de escrever PHP é confiar no sistema de digitação flexível da linguagem, que coagirá o tipo de forma transparente conforme necessário. Para valores inteiros, isso geralmente é sem problemas. Você deve ter muito cuidado com os valores de ponto flutuante.


Eu não acho que o PHP coagirá um número inteiro a string o tempo todo. Ele fará isso por, strlen(12345);mas não por $x = 12345; echo $x[2];Todas essas funções de conversão são bastante úteis e muitos programadores estão verificando seus tipos cada vez mais.
— Elzo Valugi

0

Você pode simplesmente usar o seguinte:

$intVal = 5;
$strVal = trim($intVal);

0

Eu diria que depende do contexto. strval () ou o operador de conversão (string) pode ser usado. No entanto, na maioria dos casos, o PHP decidirá o que é bom para você se, por exemplo, você o usar com echo ou printf ...

Uma pequena observação: die () precisa de uma string e não mostra nenhum int :)


"na maioria dos casos PHP vai decidir o que é bom para você" incrível:,)
— itsjavi

0
$amount = 2351.25;
$str_amount = "2351.25";

$strCorrectAmount = "$amount";
echo gettype($strCorrectAmount);    //string

Portanto, o eco será uma string de retorno .


Re " string ": literalmente ou o tipo? Ou alguma outra coisa? Você pode deixar mais claro ( editando sua resposta )?
— Peter Mortensen

Obrigado pelo comentário @ Peter Mortensen Esse é o tipo de retorno "STRING" significa que seu valor deve ser convertido como uma string em uma nova variável. é por isso que eu editei string
— Kaushik shrimali

-4
$integer = 93;
$stringedInt = $integer.'';

é mais rápido que

$integer = 93;
$stringedInt = $integer."";

$ foo = 5; $ foo = "$ foo" extremamente útil para memória no uso do PHP ''.
— Arthur Kushman
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.