1
$tally['zero']['status']='hello';
echo $tally['zero']['status'];
//prints hello, this is expected

在这个例子中,为什么只打印第一个字母?

$tally = array( "zero" => '0');     
$tally['zero']['status']='hello';
echo $tally['zero']['status'];   
// prints h, I was expecting hello

在这个例子中,为什么会抛出错误?

$tally['zero'] = 0;
$tally['zero']['status']='hello';
echo $tally['zero']['status'];
//prints Warning: Cannot use a scalar value as an array
4

2 回答 2

3

在这个例子中,为什么只打印第一个字母?

$tally = array( "zero" => '0');
$tally['zero']['status'] = 'hello';
echo $tally['zero']['status']; // h

在 PHP 中,字符串可以像数组一样被索引,也可以就地修改。索引字符串时'status'就变成了这样,第一个字符被分配给 的第一个字母。例如,这个:0hello$tally['zero']

$tally = array( "zero" => '01');
$tally['zero']['status'] = 'hello';
echo $tally['zero'];

将打印“h1”。


在这个例子中,为什么会抛出错误?

$tally['zero'] = 0;
$tally['zero']['status'] = 'hello';
echo $tally['zero']['status'];

就像错误所说的那样,0不是数组。您无法将其编入索引,因此会发出警告。

于 2012-05-06T14:06:03.763 回答
0

小心使用 " 和 '。使用 " 时,内容可以解释为变量值。

0 != '0'   number/string

我认为所有的谜团都隐藏在这里。

于 2012-05-06T14:24:01.553 回答