一个php变量可以同时容纳多个数据类型吗


Can a php variable hold multiple data types at once?

我猜这个问题已经被问过了。我知道在php中,您可以像本例中那样更改变量的数据类型。

$var = '3';
if (is_string($var))
    echo "variable is now string <br />";
$var = $var+1;
if (is_int($var))
    echo "variable is now integer <br />";

但是,一个变量能否在一个时间点容纳多个数据类型?

一个数组可以包含许多任何类型的项。

$array = array("string",1,false,fopen(__FILE__,"r"));
var_dump($array);

但作为一个变量本身,它只能是一种类型——array

尽管我认为这个问题毫无意义,也没有任何理由提出这个问题。同时拥有一个多种类型的变量有什么意义?可能只是问得不清楚。

如果在代码中添加这样的var_dump:

$var = '3';
var_dump($var);
if (is_string($var))
    echo "variable is now string <br />'n";
$var = $var+1;
var_dump($var);
if (is_int($var))
    echo "variable is now integer <br />'n";

您的输出将是:

string(1) "3"
variable is now string <br />
int(4)
variable is now integer <br />

这表明了一个简单规则,PHP允许您以任何方式使用变量,并且在您的代码中使用时更改它所代表的数据类型

否。PHP只是按照自己喜欢的方式解释值,因为它是弱类型的。

否。一个变量一次只能包含一个值。当然,该值可以是数组或对象,其本身可以包含多个值,但变量本身仍然是对单个对象的引用。

是。如果是数组或对象,则变量可以是单个时间点上多个数据类型和值的持有者