Есть ли способ преобразовать целое число в строку в PHP?
Преобразование целого числа в строку в PHP
Ответы (14)
Вы можете использовать функцию 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
// The two examples above have the same end value...
// ... And so do the two below
// Explicit cast
$items = (string)$var; // $items === "5";
// Function call
$items = strval($var); // $items === "5";
strval(0.999999997)
вернет 1
.
- person danielson317; 26.10.2018
Есть много способов сделать это.
Два примера:
$str = (string) $int;
$str = "$int";
См. Руководство PHP по подгонке типов подробнее.
0
в ""
может быть неплохим; это действительно зависит от приложения. Тем не менее, вы правильно подметили.
- person WNRosenberg; 03.08.2012
$foo = 5;
$foo = $foo . "";
Теперь $foo
- это строка.
Но, возможно, вы захотите привыкнуть к кастингу. Поскольку кастинг - это правильный способ добиться чего-то в этом роде:
$foo = 5;
$foo = (string)$foo;
Другой способ - заключить в кавычки:
$foo = 5;
$foo = "$foo"
Есть несколько способов «преобразовать» целое число в строку в PHP.
Традиционный способ информатики - преобразовать переменную в строку:
$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";
Я бы не рекомендовал последний вариант, но я видел в дикой природе код, который полагался на это поведение, поэтому подумал, что передам его.
Все эти ответы прекрасны, но все они возвращают вам пустую строку, если значение равно нулю.
Попробуйте следующее:
$v = 0;
$s = (string)$v ? (string)$v : "0";
var_dump((string)0);
печатает string(1) "0"
на PHP 5.5.9 (Дата выпуска: 6 февраля 2014 г.) для меня. В какой версии PHP вы получили пустую строку, если значение равно нулю?
- person Lacek; 15.06.2021
Использовать:
$intValue = 1;
$string = sprintf('%d', $intValue);
Или это могло быть:
$string = (string)$intValue;
Or:
settype(&$intValue, 'string');
Есть много возможных способов конвертации:
$input => 123
sprintf('%d',$input) => 123
(string)$input => 123
strval($input) => 123
settype($input, "string") => 123
Вы можете использовать оператор точки и присоединить к нему строку (и она будет преобразована в строку):
$integer = 93;
$stringedInt = $integer . "";
Или, более правильно, вы можете просто ввести целое число в строку:
$integer = 93;
$stringedInt = (string) $integer;
Как хорошо видно из ответов, да, есть несколько способов. Однако в PHP это редко нужно делать. «Догматический способ» написания PHP состоит в том, чтобы полагаться на свободную систему типизации языка, которая будет прозрачно приводить тип по мере необходимости. Для целочисленных значений это обычно не проблема. Однако вы должны быть очень осторожны со значениями с плавающей запятой.
strlen(12345);
, но не для $x = 12345; echo $x[2];
. Все эти функции преобразования довольно полезны, и многие программисты все больше и больше проверяют свои типы.
- person Elzo Valugi; 19.08.2016
Я бы сказал, это зависит от контекста. Можно использовать strval () или оператор приведения (string). Однако в большинстве случаев PHP решит, что для вас лучше, если, например, вы используете его с echo или printf ...
Одно небольшое замечание: die () нужна строка и не будет показывать int :)
$amount = 2351.25;
$str_amount = "2351.25";
$strCorrectAmount = "$amount";
echo gettype($strCorrectAmount); //string
Таким образом, эхо будет возвращено строкой.
$num = 10;
"'".$num."'"
Попробуй это
Вы можете просто использовать следующее:
$intVal = 5;
$strVal = trim($intVal);
trim()
удаляет пробелы и другие предопределенные символы с обеих сторон строки. Хотя она возвращает строку, это плохая практика. Возможно, лучше использовать strval()
или number_format()
.
- person Marwan Salim; 02.10.2020
$integer = 93;
$stringedInt = $integer.'';
быстрее чем
$integer = 93;
$stringedInt = $integer."";
echo
это (используется в так называемом строковом контексте). - person hakre   schedule 14.06.2012strval()
тоже не меняет$variable
внутри. - person hakre   schedule 31.08.2015