5

PHP эквивалент метода toString() из .NET/Java

371

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

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

$myText = $myVar . '';

Что-то подобное методу ToString() в Java или .NET.

5 ответ(ов)

0

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

$var = (string)$varname;

или функцию strval:

$var = strval($varname);

или settype:

$success = settype($varname, 'string');
// теперь $varname сам становится строкой

Все эти методы выполняют одну и ту же задачу в контексте "приведения типов" (Type-Juggling).

0

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

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

0

Да, обрамление переменной в двойные кавычки должно сработать:

$myText = "$myVar";

При использовании двойных кавычек PHP выполнит интерполяцию переменной $myVar, и её значение будет вставлено в строку, присваиваемую переменной $myText. Если вы хотите получить значение переменной, убедитесь, что она определена ранее в коде.

0

Проблема, с которой вы столкнулись, связана с тем, что числа, начинающиеся с нуля, в PHP интерпретируются как восьмеричные (октальные) числа. Таким образом, когда вы присваиваете переменной $no значение 077543, PHP трактует это как восьмеричное число, и в результате происходит конвертация в десятичное (что дает вам 32611).

Если вы хотите сохранить строку с ведущим нулем, вам нужно задать значение переменной $no как строку, а не как число. Вот несколько способов сделать это правильно:

  1. Использовать одинарные кавычки:

    $no = '077543';
    
  2. Использовать двойные кавычки:

    $no = "077543";
    
  3. Если вы получаете это значение в виде числа, вы можете явно преобразовать его в строку, а не записывать с ведущим нулем:

    $no = (string) 077543; // Это вернет '32611', что нам не нужно
    

Чтобы избежать данной проблемы, всегда используйте строки для представления данных с ведущими нулями. Например:

$no = '077543'; // сохраняем как строку
$str = $no;    // здесь $str будет '077543'

Таким образом, вы сможете сохранить и работать со значением с ведущими нулями.

0

Должны работать и двойные кавычки... это должно создать строку, затем нужно ДОБАВИТЬ/ВСТАВИТЬ приведённое к строковому типу значение $myVar между двумя пустыми строками.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь