Conversione di un numero intero in una stringa in PHP


501

C'è un modo per convertire un numero intero in una stringa in PHP?


8
PHP è liberamente scritto. Ciò che una volta era un numero intero, può essere anche una stringa, ad esempio quando lo echosi utilizza (utilizzato nel cosiddetto contesto stringa ).
hakre,

2
@hakre yes php viene digitato in modo approssimativo e l'eco stampa il valore nel contesto della stringa. Ma ciò non cambia il tipo di dati di una variabile internamente. Quindi, strval ($ variabile) è corretto.
vivek_23

@Vivek: strval()non cambia $variableneanche internamente.
Hacre,

2
Intendevo $ variabile = strval ($ variabile);
vivek_23

Risposte:


781

È possibile utilizzare la strval()funzione per convertire un numero in una stringa.

Dal punto di vista della manutenzione è ovvio quello che stai cercando di fare piuttosto che alcune delle altre risposte più esoteriche. Certo, dipende dal tuo contesto.

$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
Buon punto. Ho inserito alcune funzioni mysql_escape_string per ripulirlo.
Chris Thompson,

6
modificato poiché mysql_escape_string è obsoleto poiché ignora charset.
Kzqai,

7
@Kzqai per chiunque guardi questo esempio per cercare di evitare gli attacchi di iniezione, direi di abbandonare i tuoi tentativi di fuga dalle stringhe e usare dichiarazioni preparate
chacham15

22
Dopo 5 anni ho finalmente rimosso l'esempio SQL in quanto non era necessario rispondere alla domanda e ho creato confusione.
Chris Thompson,

3
Avvertimento!! Se passi alcuni numeri, php li arrotonderà durante la conversione in stringa: strval(0.999999997)restituisce 1.
danielson317,

86

Ci sono molti modi per farlo.

Due esempi:

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

Per ulteriori informazioni, consultare il Manuale PHP sui tipi di giocoleria .


25
@Jazzerus Se $ var è uguale a 0 (zero), diventa una stringa vuota. Problematico.
Simon Forsberg,

5
La conversione 0in ""potrebbe non essere male; dipende davvero dall'applicazione. Detto questo, hai ragione.
WNRosenberg,

2
$ f = 0; echo "$ f"; funziona bene con me, lo zero rimane ancora zero. Quindi considero "$ var" come una risposta intelligente / utile. In esecuzione 9999999 loop (stringa) richiede 0,4046459 ... sec mentre "$ var" richiede 0,3725229 ... nessuna differenza.
Melsi

45
$foo = 5;

$foo = $foo . "";

Adesso $fooè una stringa.

Ma potresti voler abituarti al casting. Poiché il casting è il modo corretto di realizzare qualcosa del genere:

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

Un altro modo è incapsulare tra virgolette:

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

Così incredibilmente strano che entrambi abbiamo scelto 5. Inoltre, + è java.
karim79,

Penso che tu stia mescolando la tua sintassi di concatenazione tra le lingue lì.
Jason,

6
Mi spingerei verso il casting, semplicemente perché rende le tue intenzioni abbondantemente chiare. Il casting ha un unico scopo: cambiare tipo. Gli altri esempi possono sembrare quasi errori, in alcuni contesti.
Frank Farmer,

Ha funzionato per me .. grazie mille
zeetit

10

Esistono diversi modi per "convertire" un numero intero in una stringa in PHP.

Il modo tradizionale di informatica sarebbe quello di lanciare la variabile come una stringa:

$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";

Puoi anche trarre vantaggio dalla conversione di tipo implicito di PHP e dall'interpolazione di stringhe:

$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";

Infine, analogamente a quanto sopra, qualsiasi funzione che accetta e restituisce una stringa può essere utilizzata per convertire e integer. Considera quanto segue:

$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";

Non consiglierei l'opzione finale, ma ho visto il codice in natura che si basava su questo comportamento, quindi ho pensato di passarlo.


9

Tutte queste risposte sono ottime, ma tutte ti restituiscono una stringa vuota se il valore è zero.

Prova quanto segue:

    $v = 0;

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

2
Si noti che la domanda dice specificamente "convertire un numero intero", non un float. :)
Microprocessore Cat

1
Correggi l'errore, per favore. La forma corretta dovrebbe essere: $ s = (stringa) $ v? (stringa) $ v: "0";
nintyfan,

7

Uso:

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

O potrebbe essere:

$string = (string)$intValue;

O:

settype(&$intValue, 'string');

4

Esistono molti modi di conversione possibili:

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

4

Puoi utilizzare l'operatore punto e concatenare una stringa (e verrà digitato come cast su una stringa):

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

O, più correttamente, puoi semplicemente digitare cast l'intero in una stringa:

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

0

Come dimostrano bene le risposte, sì, ci sono diversi modi. Tuttavia, in PHP raramente è necessario farlo. Il "modo dogmatico" per scrivere PHP è fare affidamento sul sistema di digitazione libera della lingua, che forzerà in modo trasparente il tipo secondo necessità. Per i valori interi, questo di solito è senza problemi. Tuttavia, dovresti stare molto attento ai valori in virgola mobile.


Non penso che PHP costringerà sempre un numero intero a stringere. Lo farà per strlen(12345);ma non per $x = 12345; echo $x[2];Tutte queste funzioni di casting sono abbastanza utili e molti programmatori stanno controllando sempre più i loro tipi.
Elzo Valugi,

0

Puoi semplicemente usare quanto segue:

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

0

Direi che dipende dal contesto. strval () o l'operatore di casting (stringa) potrebbe essere utilizzato. Tuttavia, nella maggior parte dei casi PHP deciderà cosa è buono per te se, ad esempio, lo usi con echo o printf ...

Una piccola nota: die () ha bisogno di una stringa e non mostrerà alcun int :)


"nella maggior parte dei casi PHP deciderà cosa è buono per te" incredibile
:,

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

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

Quindi l'eco sarà stringa di ritorno .


Ri " stringa ": letteralmente o il tipo? O qualcos'altro? Puoi renderlo più chiaro ( modificando la tua risposta )?
Peter Mortensen,

Grazie per il commento @ Peter Mortensen Questo è il tipo restituito "STRING" significa che il tuo valore deve essere convertito come stringa in una nuova variabile. quindi è per questo che ho modificato la stringa
Kaushik shrimali il

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

è più veloce di

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

$ foo = 5; $ foo = "$ foo" estremamente a vita per la memoria nell'uso di PHP ''.
Arthur Kushman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.