PHP相当于.NET/Java';s toString()

PHP相当于.NET/Java';s toString(),php,string,Php,String,如何将PHP变量的值转换为字符串 我在寻找比用空字符串连接更好的东西: $myText = $myVar . ''; 与Java或.NET中的ToString()方法类似。将其置于双引号中应该可以: $myText = "$myVar"; 您始终可以创建一个名为.ToString($in)的方法,该方法返回 $in . ''; 如何转换PHP的值 变量到字符串 可以使用或函数将值转换为字符串。(编辑:如前所述) 当您将其用作字符串时,它也应自动为您铸造。您可以使用: PHP手册的第页中

如何将PHP变量的值转换为字符串

我在寻找比用空字符串连接更好的东西:

$myText = $myVar . '';

与Java或.NET中的
ToString()
方法类似。

将其置于双引号中应该可以:

$myText = "$myVar";

您始终可以创建一个名为.ToString($in)的方法,该方法返回

$in . '';  
如何转换PHP的值 变量到字符串

可以使用或函数将值转换为字符串。(编辑:如前所述)

当您将其用作字符串时,它也应自动为您铸造。

您可以使用:


PHP手册的第页中有关于字符串转换和转换的更多详细信息,包括布尔值和空值的特殊处理。

如果要转换除简单类型(如整数或布尔值)以外的任何类型,则需要为尝试转换的类型编写自己的函数/方法,否则PHP将只打印类型(如数组、Google Sniffer或Biet)。

PHP是动态类型的,就像Chris Fournier说的,“如果你像字符串一样使用它,它就会变成字符串”。如果您希望对字符串的格式进行更多的控制,那么这就是您的答案。

这是通过类型转换完成的:

$strvar = (string) $var; // Casts to string
echo $var; // Will cast to string implicitly
var_dump($var); // Will show the true type of the variable
$var = (string)$varname;
在一个类中,您可以使用神奇的方法定义输出的内容。一个例子如下:

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);

对于原语,只需使用
(string)$var
或直接打印此变量即可。PHP是动态类型化语言,变量将动态转换为字符串

如果要将对象转换为字符串,则需要定义返回字符串的方法。禁止此方法引发异常。

您正在查找:

string strval(混合$var)
获取变量的字符串值。 有关详细信息,请参阅有关字符串的文档 有关转换为的详细信息 绳子

此函数不执行格式化 在返回的值上。如果你是 正在寻找格式化数字文件的方法 值作为字符串,请参见 sprintf()或数字格式()


您可以使用类型转换:

$strvar = (string) $var; // Casts to string
echo $var; // Will cast to string implicitly
var_dump($var); // Will show the true type of the variable
$var = (string)$varname;
或字符串值:

$var = strval($varname);
或设置类型:

$success = settype($varname, 'string');
// $varname itself becomes a string
就类型杂耍而言,它们都为同一事物工作。

使用:

您也可以像这样使用它:

$myText = print_r($myVar,true)."foo bar";
这将
$myText
设置为字符串,如:

array (
  0 => '11',
)foo bar
用于获取更多信息(变量类型,…):


另一个选项是使用内置功能:

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

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


这实际上是在变量上执行转换,与类型转换不同,它允许您有一种转换为多种类型的通用方法。

双引号也可以。。。它应该创建一个字符串,然后在两个空字符串之间追加/插入铸造字符串值$myVar。

除了Thomas G.Mayfield给出的答案之外:

如果您按照字符串铸造手册的链接进行操作,则需要了解一个非常重要的特殊情况:

(string)cast更可取,尤其是当变量$a是一个对象时,因为PHP将根据其对象模型调用\uuu toString()magic方法(如果在实例化$a的类中定义了该方法)

PHP的功能类似于

function castToString($instance) 
{ 
    if (is_object($instance) && method_exists($instance, '__toString')) {
        return call_user_func_array(array($instance, '__toString'));
    }
}

(字符串)转换操作是PHP5+编程的推荐技术,使代码更面向对象。在我看来,这是一个很好的例子,说明了设计与其他OOP语言(如Java/C#/等)的相似性(差异性),也就是说,它以自己特殊的PHP方式(无论是为了好还是为了价值)。

对于对象,您可能无法使用cast操作符。相反,我使用
json\u encode()
方法

例如,以下内容将输出到错误日志:

error_log(json_encode($args));

文档中说,您还可以执行以下操作:

$str = "$foo";
和演员一样,但我觉得它看起来更漂亮

资料来源:


尝试这种奇怪但有效的方法,将stdClass的文本部分转换为字符串类型:

$my_std_obj_result = $SomeResponse->return->data; // Specific to object/implementation

$my_string_result = implode ((array)$my_std_obj_result); // Do conversion

我认为值得一提的是,通过使用输出缓冲,您可以捕获变量中的任何输出(如
print\u r
var\u dump
):

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

感谢:

当预期字符串变量具有前导零(例如077543)时,前面答案中的一些方法(如果不是全部的话)会失败

转换此类变量的尝试无法获得预期的字符串,因为该变量已转换为基数8(八进制)

所有这些将使
$str
的值为32611:


您还可以使用PHP函数。

我使用。它可以处理每一种PHP类型,并且非常灵活(如果您愿意,可以对其进行扩展)。

正如其他人所提到的,对象需要一个
\u toString
方法才能转换为字符串。未定义该方法的对象仍然可以使用该函数生成字符串表示

此函数用于返回对象的唯一标识符。只要对象没有被破坏,该id可以用作存储对象或标识对象的哈希键。一旦对象被销毁,它的散列可以被其他对象重用

我有一个带有
\uuuuToString
方法的基本对象类,该方法默认调用
md5(spl\u Object\u hash($this))
以使输出明显唯一,因为spl\u Object\u hash的输出在对象之间看起来非常相似


这对于调试将变量初始化为对象的代码特别有用,之后在代码中怀疑它已更改为其他对象。简单地将变量回显到日志中可以揭示对象散列的变化(或不变化)。

我认为这个问题有点误导,因为, Java中的toString()不仅仅是一种将某些内容转换为字符串的方法。这就是via(string)或string.valueOf()所做的,它在PHP中也可以工作

// Java
String myText = (string) myVar;

// PHP
$myText = (string) $myVar;
请注意,这可以
$no = 077543
$str = (string)$no;
$str = "$no";
$str = print_r($no,true);
$str = strval($no);
$str = settype($no, "integer");
$parent_category_name = "new clothes & shoes";

// To make it to string option one
$parent_category = strval($parent_category_name);

// Or make it a string by concatenating it with 'new clothes & shoes'
// It is useful for database queries
$parent_category = "'" . strval($parent_category_name) . "'";
// Java
String myText = (string) myVar;

// PHP
$myText = (string) $myVar;
// 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"
$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 concatenate an empty string works too