php数组声明导致意外的功能

时间:2012-05-06 14:03:34

标签: php arrays

$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

2 个答案:

答案 0 :(得分: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不是数组。你不能索引它,因此警告。

答案 1 :(得分:0)

注意使用“和”。使用时“内容可以解释为变量值。

0 != '0'   number/string

我认为这里隐藏着所有的神秘感。