奇怪的PHP数组行为

时间:2011-10-15 07:04:10

标签: php

  

可能重复:
  PHP String in Array Only Returns First Character

我遇到了以下问题。当我在下面运行脚本时,我得到了字符串(1)“F”作为输出。怎么可能?没有错误,显示通知..没有。键入$ c中不存在的任何内容。你能解释一下吗?

   <?php
   $c = 'FEEDBACK_REGISTER_ACTIVATION_COMPLETED_MSG';
   var_dump ($c['whatever']);
   ?>

我在PHP 5.3.3上遇到了这个问题。 (LINUX)

2 个答案:

答案 0 :(得分:3)

PHP允许您对字符串进行索引:

$str = "Hello, world!";
echo $str[0]; // H
echo $str[3]; // l

PHP也会隐式地将字符串转换为整数,但是当它失败时,使用零:

$str = "1";
echo $str + 1; // 2
$str = "invalid";
echo $str + 1; // 1

所以它试图做的是索引字符串,但索引不是整数,所以它试图将字符串转换为整数,产生零,然后它访问字符串的第一个字符,这发生是F。

答案 1 :(得分:0)

当关联数组无法找到索引时,通过PHP的Magic类型转换,索引本身会转换为int 0,因此它就像 如果

$sample = 'Sample';

$sample['anystring'] = $sample[0];

所以如果o / p是'S';