我正在尝试创建一个数组:
$tb_src[1]
,$tb_src[2]
等
在使用这个定义之前,我还创建了一个非数组变量:$tb_src
我正在代码的另一部分中使用它。
由于我无法想象的原因,如果我使用该定义,它会使数组只包含我试图归因于它的字符串中的第一个字符,所以我得到z
而不是zzx
这里发生了什么?
$tb_src = 'n1a'; // I need to use this variable, in other part of code.
// the above line is causing the problem with below code.
for ($i = 0; $i < 3; $i++) { // defining the array
$tb_src[$i + 1] = "zzx";
}
echo $tb_src[1]; // why does it output only first letter 'z' and not 'zzx'?
答案 0 :(得分:0)
您无法从字符串值创建数组。而是创建一个新变量,将该字符串作为第一个值,然后向其中添加新项。如果愿意,您可以将其分配回来。
<?php
// string
$tb_src = 'n1a';
// tmp array with above string as first value
$tmp = [$tb_src];
// add your items
for ($i = 0; $i < 3; $i++) {
$tmp[] = "zzx";
}
/* $tmp is now
Array
(
[0] => n1a
[1] => zzx
[2] => zzx
[3] => zzx
)
*/
// echo second element zzx
echo $tmp[1];
print_r($tmp);
如果您愿意,可以将$tmp
分配回$tb_src
。
答案 1 :(得分:-1)
$tb_src
是一个字符串,而不是一个数组。生成的字符串为nzzz
,正在打印第二个字符(位置1)。你的意思是创建一个新变量而不是覆盖你创建的变量吗? screen shot of code proving that the variable is a string