PHP свободно набран. То, что когда-то было целым числом, также может быть строкой, например, когда вы echoэто используете (используется в так называемом строковом контексте ).
Хакре
2
@hakre да php свободно набирается, и echoing печатает значение в строковом контексте. Но это не меняет тип данных внутренней переменной. Следовательно, strval ($ variable) является правильным.
vivek_23
@Vivek: strval()не меняет и $variableвнутренне.
Хакре
2
Я имел в виду $ variable = strval ($ variable);
vivek_23
Ответы:
781
Вы можете использовать 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";
@Jazzerus Если $ var равно 0 (нулю), это становится пустой строкой. Проблематично.
Саймон Форсберг
5
Преобразование 0в ""не может быть плохим; это действительно зависит от приложения. Тем не менее, вы делаете хорошую мысль.
WNRosenberg
2
$ f = 0; echo "$ f"; у меня нормально работает, ноль остается еще ноль. Поэтому я рассматриваю «$ var» как умный / полезный ответ. Для 9999999 циклов (строка) требуется 0.4046459 ... сек, а для $ var - 0.3725229 ... без разницы.
Мелси
45
$foo =5;
$foo = $foo ."";
Теперь $fooэто строка.
Но вы можете привыкнуть к кастингу. Поскольку кастинг - это правильный способ сделать что-то в этом роде:
Так невероятно странно, что мы оба выбрали 5. Кроме того, + - это Java.
karim79
Я думаю, что вы смешиваете синтаксис между языками там.
Джейсон
6
Я склоняюсь к кастингу просто потому, что это делает ваши намерения совершенно ясными. Кастинг имеет одну-единственную цель: менять типы. Другие примеры в некоторых случаях могут выглядеть почти как ошибки.
Фрэнк Фармер
Работал для меня ..
Thnx
10
Есть несколько способов «преобразовать» целое число в строку в 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";
Я бы не рекомендовал последний вариант, но я видел дикий код, который основывался на этом поведении, поэтому подумал, что передам его.
Как хорошо показывают ответы, да, есть несколько способов. Однако в PHP вам редко нужно это делать. «Догматический способ» написания PHP - это полагаться на свободную систему типизации языка, которая будет прозрачно приводить тип по мере необходимости. Для целочисленных значений это обычно без проблем. Вы должны быть очень осторожны со значениями с плавающей точкой.
Я не думаю, что PHP будет постоянно приводить целое число к строке. Это будет сделано для, strlen(12345);но не для. $x = 12345; echo $x[2];Все эти функции приведения довольно полезны, и многие программисты все чаще проверяют свои типы.
Я бы сказал, что это зависит от контекста. Можно использовать strval () или оператор приведения (string). Тем не менее, в большинстве случаев PHP решит, что хорошо для вас, если, например, вы используете его с echo или printf ...
Одно небольшое замечание: die () нужна строка и не будет показывать int :)
Re " строка ": буквально или тип? Или что-то другое? Можете ли вы сделать это более понятным ( отредактировав свой ответ )?
Питер Мортенсен
Спасибо за комментарий @ Питер Мортенсен. Это возвращаемый тип "STRING" означает, что ваше значение должно быть преобразовано как строка в новую переменную. вот почему я отредактировал строку
echo
это используете (используется в так называемом строковом контексте ).strval()
не меняет и$variable
внутренне.Ответы:
Вы можете использовать
strval()
функцию для преобразования числа в строку.С точки зрения обслуживания очевидно, что вы пытаетесь сделать, а не некоторые другие более эзотерические ответы. Конечно, это зависит от вашего контекста.
источник
strval(0.999999997)
возвращает1
.Есть много способов сделать это.
Два примера:
Смотрите руководство по PHP для жонглирования типов для получения дополнительной информации.
источник
0
в""
не может быть плохим; это действительно зависит от приложения. Тем не менее, вы делаете хорошую мысль.Теперь
$foo
это строка.Но вы можете привыкнуть к кастингу. Поскольку кастинг - это правильный способ сделать что-то в этом роде:
Другой способ - заключить в кавычки:
источник
Есть несколько способов «преобразовать» целое число в строку в PHP.
Традиционный способ информатики - преобразовать переменную в строку:
Вы также можете воспользоваться неявным преобразованием типов PHP и интерполяцией строк:
Наконец, как и выше, любая функция, которая принимает и возвращает строку, может быть использована для преобразования и целого числа. Учтите следующее:
Я бы не рекомендовал последний вариант, но я видел дикий код, который основывался на этом поведении, поэтому подумал, что передам его.
источник
Все эти ответы великолепны, но все они возвращают вам пустую строку, если значение равно нулю.
Попробуйте следующее:
источник
Использование:
Или это может быть:
Или:
источник
Есть много возможных способов конвертации:
источник
Вы можете использовать оператор period и связать с ним строку (и она будет приведена к типу):
Или, более правильно, вы можете просто ввести приведение целого числа к строке:
источник
Как хорошо показывают ответы, да, есть несколько способов. Однако в PHP вам редко нужно это делать. «Догматический способ» написания PHP - это полагаться на свободную систему типизации языка, которая будет прозрачно приводить тип по мере необходимости. Для целочисленных значений это обычно без проблем. Вы должны быть очень осторожны со значениями с плавающей точкой.
источник
strlen(12345);
но не для.$x = 12345; echo $x[2];
Все эти функции приведения довольно полезны, и многие программисты все чаще проверяют свои типы.Вы можете просто использовать следующее:
источник
Я бы сказал, что это зависит от контекста. Можно использовать strval () или оператор приведения (string). Тем не менее, в большинстве случаев PHP решит, что хорошо для вас, если, например, вы используете его с echo или printf ...
Одно небольшое замечание: die () нужна строка и не будет показывать int :)
источник
Таким образом, эхо будет возвращать строку .
источник
быстрее чем
источник