在php帮助中找到这行代码不是复杂
                  <?phpfunction utfCharToNumber($char) {
    $i = 0;
    $number = '';
    while (isset($char{$i})) {
        $number.= ord($char{$i});
        ++$i;
        }
    return $number;
    }// example use
foreach (array('a','A','b','B','c','C','e','é','É', 'ó','Ó','ö','Ö','ő','Ő','ú') as $d) {
    echo $d,': ',utfCharToNumber($d),"\n";
    }
?>
运行后觉得里面有两个问题不是很清楚isset($char{$i})这里的$char{$i}和 $char [$i]有什么区别,
用print输出$char{$i}和$char是一样的效果如果是这样作者为什么不写$char还直接写,因为我输出的这里的$i每次循环的时候都是0,小弟不才学的不好请大侠们多多指点。

解决方案 »

  1.   

    $char{$i}和 $char [$i] 测试真没有区别,长见识了,这种怪异的语法还是第一次见
    我输出的这里的$i每次循环的时候都是0。
    function utfCharToNumber($char) {
      $i = 0;
      $number = '';
      while (isset($char{$i})) {
      $number.= ord($char{$i});
      ++$i;
      }
      var_dump($i);
      return $number;
      }
    我想你没测准。普通字母输出$i为1,也就是一字节。那个希腊文吧是2,汉字'我'是3
      

  2.   

    先看结果a: 97
    A: 65
    b: 98
    B: 66
    c: 99
    C: 67
    e: 101
    é: 195169
    É: 195137
    ó: 195179
    Ó: 195147
    ö: 195182
    Ö: 195150
    ő: 197145
    Ő: 197144
    ú: 195186$char{$i} 和 $char[$i]
    有着质的不同
    前者表示字符串 $char 的第 $i 个字节,后者表示数组 $char 的第 $i 个元素
    当然用 $char[$i] 来表示字符串 $char 的第 $i 个字节也并没有错误,这就是其他高级语言的“字节数组”
    但是,你对字符串使用数组函数就一定达不到你预期的效果
    所以从一开始就加以区别,是很必要的
      

  3.   

    这么说$char{$i}和$char[$i]前者是对一个字符串进行字节循环,而后者是对数组元素进行循环,终于找到了,那唠叨哥是怎么晓得两者的区别的,有官方文档可查么。高手就是不一样啊问什么都知道。还有二楼的那位同样非常感谢。