PHP эквивалент .NET / Java toString () - PullRequest
530 голосов
/ 26 августа 2008

Как преобразовать значение переменной PHP в строку?

Я искал что-то лучшее, чем объединение с пустой строкой:

$myText = $myVar . '';

Как и метод ToString() в Java или .NET.

Ответы [ 24 ]

769 голосов
/ 26 августа 2008

Вы можете использовать операторы приведения :

$myText = (string)$myVar;

Дополнительные сведения о приведении и преобразовании строк приведены в разделе Строки руководства по PHP, включая специальную обработку для логических значений и значений NULL.

299 голосов
/ 26 августа 2008

Это делается с типизацией:

$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);
123 голосов
/ 24 августа 2010

Использование 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);
57 голосов
/ 02 января 2010

Вы можете использовать Typecasting:

$var = (string)$varname;

или StringValue:

$var = strval($varname);

или SetType:

$success = settype($varname, 'string');
// $varname itself becomes a string

Все они работают на одну и ту же вещь в терминах Type-Juggling.

32 голосов
/ 26 августа 2008

Как мне преобразовать значение PHP переменная в строку?

Значение может быть преобразовано в строку с использованием функции (string) cast или strval () . (Изменить: как Томас также заявил).

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

27 голосов
/ 20 декабря 2009

Вы ищете strval :

string strval ( mixed $var )

Получить строковое значение переменной. Смотрите документацию по строке для больше информации о преобразовании в строка.

Эта функция не выполняет форматирование на возвращаемое значение. Если ты ищет способ форматирования числовых значение в виде строки, пожалуйста, смотрите sprintf () или number_format ().

17 голосов
/ 26 августа 2008

Для примитивов просто используйте (string)$var или напечатайте эту переменную прямо сейчас. PHP - это динамически типизированный язык, и переменная будет преобразована в строку на лету.

Если вы хотите преобразовать объекты в строки, вам нужно определить метод __toString(), который возвращает строку. Этот метод запрещает генерировать исключения.

15 голосов
/ 26 августа 2008

Помещение в двойные кавычки должно работать:

$myText = "$myVar";
10 голосов
/ 26 февраля 2014

Думаю, стоит упомянуть, что вы можете перехватить любой вывод (например, print_r, var_dump) в переменной, используя буферизацию вывода:

<?php
ob_start();
var_dump($someVar);
$result = ob_get_clean();
?>

Благодаря: https://stackoverflow.com/a/139491/987864

7 голосов
/ 07 марта 2011

Другой вариант - использовать встроенную функцию settype :

<?php
$foo = "5bar"; // string
$bar = true;   // boolean

settype($foo, "integer"); // $foo is now 5   (integer)
settype($bar, "string");  // $bar is now "1" (string)
?>

Это фактически выполняет преобразование переменной в отличие от преобразования типов и позволяет использовать общий способ преобразования в несколько типов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...