变量只输出其几个字符串中的第一个字符

时间:2018-04-29 18:37:32

标签: php arrays

我正在尝试创建一个数组:

$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'?

2 个答案:

答案 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);

https://3v4l.org/EEP1v

如果您愿意,可以将$tmp分配回$tb_src

答案 1 :(得分:-1)

$tb_src是一个字符串,而不是一个数组。生成的字符串为nzzz,正在打印第二个字符(位置1)。你的意思是创建一个新变量而不是覆盖你创建的变量吗? screen shot of code proving that the variable is a string