代码已经贴在上面了,你们可以自己试试;我的php是5.2的,不知道怎么解决?!

解决方案 »

  1.   

    关键是绕不开了。
    array_key_exists不能用,因为代码中逻辑不能用,请问还有什么办法?谢谢!
      

  2.   

    我在PHP4试验了,也是这个结果。
      

  3.   

    我作天发给php.net一个debug. 石沉大海,还要扬言java web已死,人家java语言的严密性高他万倍!
      

  4.   

    帮你问的同事$username['username']['surname'] 
    把'surname' 转换为int  
    就成了:$username['username'][0]  
    因为:$username = array('username'=>'eingmarra');
    所有:$username['username'][0]  = ‘e’;
     
    在试试:
    var_dump($username['username'][3]);
    string(1) "g"下面是我的测试代码
    判断数组中指定的key是否存在,为什么isset和!empty返回的都是true啊,php4我测试过,PHP5网友也测试过
     
    //####程序如下
     
    <?php
    $username = array('username'=>'eingmarra');
    var_dump($username['username']['surname']);
    echo "echo:".$username['username']['surname']."\n";
    if(isset($username['username']['surname']))
    {
            echo "通过isset\n";
     
    }
    if($username['username']['surname'])
    {
            echo "pass\n";
     
    }
    if(!empty($username['username']['surname']))
    {
            echo "not empyt \n";
    }
     
    print_r($username);
     
    ?>
     //####输出结果
     
    [www@vblogtest yannian]$ /usr/local/php/bin/php ./test.php 
    string(1) "e"
    echo:e
    通过isset
    pass
    not empyt 
    Array
    (
        [username] => eingmarra
    )
      

  5.   

    测试LZ的代码 结果是报错 未知的INDEX
      

  6.   

    <?php
    $username = array('username'=>'eingmarra'); 
    var_dump($username['username']['surname']);  
    //你的$username['username'] 已经是一个字符串了,再对字符串索引就会把 索引的转为数字
    $test=array(array('dfsa'=>'afs'),array('fdsa'=>'fsa'));
    var_dump($test[0]["dssadfaf"]);//此行输出为 NULL
    ?>
      

  7.   

    我知道怎么回事了
    $username['username'] 你明知它是一个字符串,
    却偏要把它当成数组来处理....
      

  8.   


    <?php
    $username = array('username'=>'eingmarra');
    settype($username['username'],'array');
    echo !isset($username['username']['surname']); # 1
    var_export($username['username']['surname']); # NULL
    echo PHP_VERSION; # 5.2.5
    ?>
      

  9.   


    这不是bug,那个结果其实就是$username['username'][0],因为你的$username['username']是一个字符串,也就是eingmarra,而当你用surname这个关联索引时,字符串无法识别,所以会转换为整型,也就是执行(int)eingmarra,结果自然为0,就变成了执行$username['username'][0]。同样的,isset($username['username']['surname']),其实就是$username['username'][0],值存在,自然为true