我对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
将成为数组。
有人可以澄清为什么会发生这种情况,如果可以使用方括号访问字符串的字符而不将输出转换为数组?
答案 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"
以确保它是字符串变量。