2013-04-17 109 views
0

我很困惑为什么在以下两个代码块中,打印$arr会给出相同的输出,但$arr['type'][0]不会。注意r在第二代码块输出:获取PHP数组中的索引位置值

$arr=array('type'=>' review'); 
print_r($arr); 
echo '<br>'; 
print_r($arr['type'][0]); 

$arr['type']='review'; 
print_r($arr); 
echo '<br>'; 
print_r($arr['type'][0]); 

OUTPUT

Array ([type] => review) 

Array ([type] => review) 
r 

回答

2

有一个额外的空间:

$arr=array('type'=>' review'); 
        ^-- right there 

我认为这是打印空间,你看不到,因为HTML是空白不敏感。

这也可能会引发PHP警告。索引一个字符串就像是一个数组通常是一个错误。确保您已打开错误和通知。

+0

omg,这只是我的一部分愚蠢。我认为有更高层次的事情发生。谢谢! –

+1

当这种情况发生的时候,我讨厌它......如果我们已经持续了足够的时间,我们都做到了。 – Abela

1

其实它也是一样的。请注意,您在第一块具有空间:

$arr = array('type' => ' review'); 
// ---------------------^ 
print_r($arr); 
echo '<br>'; 
print_r($arr['type'][0]); 
2

在你的第一个代码块,$arr=array('type'=>' review');有第一单引号和审查将R之间的空间。这就是为什么你的第一个代码块看起来什么都不打印,因为它打印出一个空格字符。

将该代码更改为$arr=array('type'=>'review');以解决该问题。

0

print_r在阵列上打印信息。你传递的数组print_r是一个字符数组,它是一个字符串。 [0]显示'r',[1]显示'e',等等。这就是为什么print_r($ arr ['type'])显示完整的字符串,并且添加第二个索引可以在您提供的任何索引处显示适当的字符。