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.