Преобразование целого числа в строку в PHP

450

Есть ли способ преобразовать целое число в строку в PHP?

  • 7
    PHP слабо типизирован. То, что когда-то было целым числом, также может быть строкой, например, когда вы его echo (используется в так называемом строковом контексте ).
  • 2
    @hakre да php свободно набирается, и echoing выводит значение в строковом контексте. Но это не меняет внутренне тип данных переменной. Следовательно, strval ($ variable) является правильным.
Показать ещё 2 комментария
Теги:
string
type-conversion
integer

13 ответов

693
Лучший ответ

Вы можете использовать strval() для преобразования числа в строку.

С точки зрения обслуживания очевидно, что вы пытаетесь сделать, а не некоторые другие более эзотерические ответы. Конечно, это зависит от вашего контекста.

$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";
  • 28
    Пожалуйста, рассмотрите возможность устранения очевидных потенциальных дыр в SQL-инъекциях ...
  • 2
    Хорошая точка зрения. Я добавил туда некоторые функции mysql_escape_string, чтобы очистить их.
Показать ещё 10 комментариев
82

Есть много способов сделать это.

Два примера:

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

Подробнее см. Руководство по PHP Типы жонглирования.

  • 11
    +1: $str = "$var"; мой любимый способ бросать струны.
  • 23
    @Jazzerus Если $ var равно 0 (нулю), это становится пустой строкой. Проблематично.
Показать ещё 2 комментария
40
$foo = 5;

$foo = $foo . "";

now $foo - это строка.

Но вы можете захотеть привыкнуть к кастингу. Поскольку литье - это правильный способ выполнить что-то в этом роде.

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

Другим способом является инкапсуляция в кавычки:

$foo = 5;
$foo = "$foo"
  • 0
    Так невероятно странно, что мы оба выбрали 5. Кроме того, + - это Java.
  • 0
    Вот это да. Согласовано. И спасибо ;)
Показать ещё 3 комментария
9

Существует несколько способов "преобразовать" целое число в строку в PHP.

Традиционным способом CS было бы преобразование переменной в виде строки

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

Вы также можете использовать неявное преобразование типа 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";     

Наконец, аналогично вышесказанному, любая функция, которая принимает и возвращает строку, может быть использована для преобразования и целого. Рассмотрим следующее

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

Я бы не рекомендовал окончательный вариант, но я видел код в дикой природе, который полагался на это поведение, поэтому подумал, что пройду его.

8

Все эти ответы велики, но все они возвращают вам пустую строку, если значение равно нулю.

Попробуйте следующее:

$v = 0;

$s = (string)$v : (string)$v ? "0";
  • 2
    Обратите внимание, что в вопросе конкретно говорится «преобразование целого числа», а не числа с плавающей точкой. :)
  • 1
    Исправьте ошибку, пожалуйста. Правильная форма должна быть: $ s = (строка) $ v? (строка) $ v: "0";
6
$intValue = 1; 
$string = sprintf('%d',$intValue ); 

или это может быть:

$string = (string)$intValue ; 

или:

settype(&$intValue ,'string');  
4

Существует много возможных способов преобразования:

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

Вы можете либо использовать оператор периода, либо объединить в него строку (и это будет тип, приведённый к строке):

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

Или, вернее, вы можете просто набрать целое число в строку:

$integer = 93;
$stringedInt = (string) $integer;
0
$amount = 2351.25;
$str_amount = "2351.25";

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

Таким образом, эхо будет возвращать строку

0

Вы можете просто использовать следующее:

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

Поскольку ответы здесь хорошо демонстрируются, да, есть несколько способов. Однако в PHP вам редко приходится это делать. "Догматический путь" для написания PHP заключается в том, чтобы полагаться на языковую систему набора текста, которая будет прозрачно принуждать тип по мере необходимости. Для целых значений это обычно бывает без проблем. Однако вы должны быть очень осторожны с значениями с плавающей запятой.

  • 0
    Я не думаю, что PHP будет постоянно приводить целое число к строке. Это будет сделано для strlen(12345); но не для $x = 12345; echo $x[2]; Все эти функции приведения довольно полезны, и многие программисты все чаще проверяют свои типы.
0

Я бы сказал, это зависит от контекста. strval() или может использоваться оператор кастинга (строка), однако в большинстве случаев PHP решит, что для вас полезно, если для например, вы используете его с echo или printf... Одна маленькая заметка: die() нуждается в строке и не будет отображать int:)

  • 0
    «В большинстве случаев PHP решит, что хорошо для вас».
-5
$integer = 93;
$stringedInt = $integer.'';

быстрее, чем

$integer = 93;
$stringedInt = $integer."";
  • 0
    $ foo = 5; $ foo = "$ foo" чрезвычайно требователен к памяти при использовании PHP ''.
Сообщество Overcoder
Наверх
Меню