Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个php变量可以同时保存多个数据类型吗?_Php - Fatal编程技术网

一个php变量可以同时保存多个数据类型吗?

一个php变量可以同时保存多个数据类型吗?,php,Php,我猜这已经被问过了。我知道在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 />"; $var='3'; 如果(是字符串($var)) echo“变量现在是字符串”; $var

我猜这已经被问过了。我知道在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 />";
$var='3';
如果(是字符串($var))
echo“变量现在是字符串
”; $var=$var+1; if(is_int($var)) echo“变量现在是整数
”;

但是,一个变量能否在一个时间点上保存多个数据类型?

否。PHP只是随意解释该值,因为它是弱类型的。

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

数组可以包含多种类型的项

$array = array("string",1,false,fopen(__FILE__,"r"));
var_dump($array);
但作为一个变量本身,它只能是一种类型-
数组


尽管我觉得这个问题毫无意义,也没有任何理由去问它。一次拥有多种类型的一个变量有什么意义?可能只是不清楚地问了一下。

如果您在代码中添加类似的var\u 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";
$var='3';
var_dump($var);
如果(是字符串($var))
echo“变量现在是字符串
\n”; $var=$var+1; var_dump($var); if(is_int($var)) echo“变量现在是整数
\n”;
您的输出将是:

string(1) "3"
variable is now string <br />
int(4)
variable is now integer <br />
字符串(1)“3”
变量现在是字符串
int(4) 变量现在是整数

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

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

你的意思是同时是一个字符串和一个int?不。绝对不是。在没有检查源代码的情况下,我假设
PHP
使用某种表示缓存,因此,如果变量作为字符串访问,字符串表示将被缓存,如果稍后作为整数访问,则变量将缓存这两种表示。但除此之外,我看不出一个具有多个数据类型的变量是如何表现出来的。不,该变量持有的类型当时是数组或对象,但仍然只有一种类型。