PHP如何确定变量是数组还是字符串?

时间:2014-05-18 18:44:05

标签: php arrays string

我对PHP如何确定变量是字符串还是数组感到困惑。它似乎取决于所使用的运营商。

以下是一个例子:

<?php
$z1 = "abc";
$out = "";
for ($i = 0; $i < strlen($z1); $i++)
{
    // $out[$i] = $z1[$i]; 
    $out = $out.$z1[$i];
}
print $out;
?>

在上面的版本中,$out成为一个字符串(print $z1显示“abc”)。但是,如果我使用第一行$out[$i] = $z1[$i];,则$out将成为数组。

有人可以澄清为什么会发生这种情况,如果可以使用方括号访问字符串的字符而不将输出转换为数组?

2 个答案:

答案 0 :(得分:1)

PHP中字符串的定义被认为是以线性格式写成的一组数据(即:$var = "username=SmokeyBear05,B-day=01/01/1980";

然而,数组是一组分为几个部分的数据。一种列表格式,如果你愿意的话。作为一个例子,我把之前的数据字符串写成数组格式......

Array(['username']=>"SmokeyBear05", ['B-day']=>"01/01/1980")

现在字符串通常定义如下:$ var =“Your String”; 然而,数组可以用三种不同的格式编写:

$var1 = array('data1','data2','data3');
$var2 = array('part A'=>'data1','part B'=>'data2','part C'=>'data3');

var1的输出将索引值设置为0.然而,var2的输出设置自定义索引值。现在编写数组(最不常见的格式)的第三种方法是这样的:

$var[0]="data1";
$var[1]="data2";
$var[2]="data3";

这需要更多工作,但允许您设置索引。

大多数使用PHP的Web开发人员会将来自外部源的数据设置为字符串,以将其传递到另一个PHP脚本,然后使用explode()函数将其分解为数组。

答案 1 :(得分:0)

定义变量$out = ""时,for循环不会将此变量理解为字符串值。如果设置$out[$i]值,则默认情况下会将其视为数组。

如果要将输出结果作为字符串值,可以定义$out = "a"以确保它是字符串变量。