Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
894
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
PHP эквивалент .NET/Java's toString()
Как преобразовать значение переменной PHP в строку?
Я искал что-то получше, чем сцепление с пустой строкой:
$myText = $myVar . '';
Как метод ToString() в Java или .NET.
Вы можете использовать операторы кастинга :
$myText = (string)$myVar;
Более подробная информация о приведении и преобразовании строк содержится в разделе Strings руководства PHP, включая специальную обработку логических значений и нулей.
Это делается с помощью typecasting:
$strvar = (string) $var; // Casts to string
echo $var; // Will cast to string implicitly
var_dump($var); // Will show the true type of the variable
В классе можно определить, что выводится с помощью магического метода __toString . Пример приведен ниже:
class Bottles {
public function __toString()
{
return 'Ninety nine green bottles';
}
}
$ex = new Bottles;
var_dump($ex, (string) $ex);
// Returns: instance of Bottles and "Ninety nine green bottles"
Еще несколько примеров приведения типов:
$i = 1;
// int 1
var_dump((int) $i);
// bool true
var_dump((bool) $i);
// string "1"
var_dump((string) 1);
Используйте print_r :
$myText = print_r($myVar,true);
Вы также можете использовать как
$myText = print_r($myVar,true)."foo bar";
это установит $myText в строку, например :
array (
0 => '11',
)foo bar
Используйте var_export , чтобы получить немного больше информации (с типами переменных,...) :
$myText = var_export($myVar,true);
Как мне преобразовать значение a PHP
переменная в строку?
Как мне преобразовать значение a PHP переменная в строку?
Значение может быть преобразовано в строку с помощью приведения (string) или функции strval() . (Edit: Как также заявил Томас ).
Он также должен быть автоматически приведен для вас, когда вы используете его в качестве строки.
Вы ищете strval :
string strval ( mixed $var )Получите строковое значение переменной. См. В документации на строку более подробная информация о преобразовании в строка.
Эта функция не выполняет форматирование о возвращаемом значении. Если вы ищем способ форматирования числовых данных значение в виде строки, пожалуйста, смотрите sprintf() или number_format().
Для примитивов просто используйте (string)$var или сразу же выведите эту переменную. PHP-это динамически типизированный язык, и переменная будет приведена к строке на лету.
Если вы хотите преобразовать объекты в строки, вам нужно будет определить метод __toString() , который возвращает строку. Этот метод запрещен для создания исключений.
Я думаю, стоит упомянуть, что вы можете поймать любой вывод (например , print_r, var_dump ) в переменной с помощью буферизации вывода:
<?php
ob_start();
var_dump($someVar);
$result = ob_get_clean();
?>
Благодаря: https://stackoverflow.com/a/139491/987864
Другим вариантом является использование встроенной функции settype :
<?php
$foo = "5bar"; // string
$bar = true; // boolean
settype($foo, "integer"); // $foo is now 5 (integer)
settype($bar, "string"); // $bar is now "1" (string)
?>
Это фактически выполняет преобразование переменной в отличие от typecasting и позволяет вам иметь общий способ преобразования в несколько типов.
В дополнение к ответу, данному Томасом г. Мэйфилдом:
Если вы перейдете по ссылке на руководство по литью струн, есть особый случай, который очень важно понять:
(string) приведение предпочтительно, особенно если переменная $a является объектом, поскольку PHP будет следовать протоколу приведения в соответствии с его объектной моделью, вызывая метод __toString() magic (если таковой определен в классе, из которого создается экземпляр $a).
PHP делает что-то похожее на
function castToString($instance)
{
if (is_object($instance) && method_exists($instance, '__toString')) {
return call_user_func_array(array($instance, '__toString'));
}
}
Операция приведения (string) -это рекомендуемый метод для программирования PHP5+, делающий код более объектно-ориентированным. IMO это хороший пример конструктивного сходства (различия) с другими OOP языками, такими как Java/C#/etc.,, т. е. в своем собственном особом PHP способе (когда это полезно или полезно).
Как уже упоминалось ранее, для приведения объектов к строке требуется метод __toString . Объект, который не определяет этот метод, все равно может создать строковое представление с помощью функции spl_object_hash.
Эта функция возвращает уникальный идентификатор объекта. Этот идентификатор может использоваться в качестве ключа hash для хранения объектов или для идентификации объекта, если объект не уничтожен. После уничтожения объекта его hash можно повторно использовать для других объектов.
У меня есть базовый класс объектов с __toString методом, который по умолчанию вызывает md5(spl_object_hash($this)) , чтобы сделать вывод явно уникальным, так как выходные данные из spl_object_hash могут выглядеть очень похожими между объектами.
Это особенно полезно для отладки кода, когда переменная инициализируется как объект, а затем в коде предполагается, что она изменилась на другой объект. Простое повторение vars в журнал может выявить изменение от объекта hash (или нет).
Некоторые, если не все из приведенных выше методов терпят неудачу, когда предполагаемая строковая переменная имеет начальный ноль, т. е. 077543 попытка преобразовать такую переменную не может получить предполагаемую строку, потому что переменная преобразуется в основание 8 (восьмеричное).
Все это приведет к тому, что $str будет иметь значение 32611
$no = 077543
$str = (string)$no;
$str = "$no";
$str = print_r($no,true);
$str = strval($no);
$str = settype($no, "integer");
Я думаю, что этот вопрос немного вводит в заблуждение, так как, toString() в Java-это не просто способ привести что-то к строке, это то, что делает приведение через (string) или String.valueOf(), и это работает так же хорошо в PHP.
//Java
String myText = (string) myVar;
//PHP
$myText = (string) $myVar;
Обратите внимание, что это может быть проблематично, так как Java является сохранением типа. Смотрите здесь для получения более подробной информации
Но, как я уже сказал, это литье и, следовательно, не эквивалент Java toString(). toString в Java не просто приводит объект к строке, он insted даст вам строковое представление . И вот что делает __toString() в PHP
//Java
class SomeClass{
public String toString(){
return 'some string representation';
}
}
//php
class SomeClass{
public function __toString()
{
return 'some string representation';
}
}
А с другой стороны:
//Java
new SomeClass().toString();//'some string representation'
//PHP
strval(new SomeClass);//'some string representation'
Что я подразумеваю под "предоставлением строкового представления"? Представьте себе класс для библиотеки с миллионами книг.
- Приведение этого класса к строке будет (по умолчанию) преобразовывать данные, здесь все книги, в строку, так что строка будет очень длинной и большую часть времени не очень полезной.
- В строку вместо даст вам строку repesentation, т. е. только название этой библиотеки. Это короче и поэтому дает вам меньше, но более важную информацию.
Это оба допустимых примера, но с очень разными целями, neigter-идеальное решение для каждого случая, и вы должны выбрать мудро, который лучше подходит для ваших потребностей.
Конечно есть еще больше вариантов:
$no = 421337 //a number in php
$str = "$no"; //in PHP stuff inside "" is calculated and variables are replaced
$str = print_r($no,true); //same as String.format();
$str = settype($no, 'string'); // sets $no to the String Type
$str = strval($no); //get the string value of $no
$str = $no . ''; //as you said concat an empty string works too
Все эти методы будут возвращать строку, некоторые из них используют _ _ toString internaly некоторые другие не будут работать на Objects взгляните на PHP documentation для получения более подробной информации.
Я использую variableToString
https://github.com/lingtalfi/VariableToString
Он обрабатывает каждый тип php и является гибким (вы можете расширить его, если хотите)