PHP 的烂解释器的bug! 代码已经贴在上面了,你们可以自己试试;我的php是5.2的,不知道怎么解决?! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 关键是绕不开了。 array_key_exists不能用,因为代码中逻辑不能用,请问还有什么办法?谢谢! 我在PHP4试验了,也是这个结果。 我作天发给php.net一个debug. 石沉大海,还要扬言java web已死,人家java语言的严密性高他万倍! 帮你问的同事$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通过issetpassnot empyt Array( [username] => eingmarra) 测试LZ的代码 结果是报错 未知的INDEX <?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?> 我知道怎么回事了$username['username'] 你明知它是一个字符串,却偏要把它当成数组来处理.... <?php$username = array('username'=>'eingmarra');settype($username['username'],'array');echo !isset($username['username']['surname']); # 1var_export($username['username']['surname']); # NULLecho PHP_VERSION; # 5.2.5?> 这不是bug,那个结果其实就是$username['username'][0],因为你的$username['username']是一个字符串,也就是eingmarra,而当你用surname这个关联索引时,字符串无法识别,所以会转换为整型,也就是执行(int)eingmarra,结果自然为0,就变成了执行$username['username'][0]。同样的,isset($username['username']['surname']),其实就是$username['username'][0],值存在,自然为true php编程 会的看一下 我在看2003出版的 PHP技术内幕 我想问一下 里面的东西是不是过时了? 郁闷的rewrite 用mysql存储上传的图像文件该怎么写php语句显示出来? 结帖超快!!!在前台文章如何分页显示??? 幼稚问题,字段相加 关于函数ereg() >>>请问php下有没有实现网页重定向的函数<<< 可以禁止别人在我的网页上截图吗? 如何用php实现留言无限回复功能 装phpadmin装不了啊 php无法解析
array_key_exists不能用,因为代码中逻辑不能用,请问还有什么办法?谢谢!
把'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
)
$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
?>
$username['username'] 你明知它是一个字符串,
却偏要把它当成数组来处理....
<?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
?>
这不是bug,那个结果其实就是$username['username'][0],因为你的$username['username']是一个字符串,也就是eingmarra,而当你用surname这个关联索引时,字符串无法识别,所以会转换为整型,也就是执行(int)eingmarra,结果自然为0,就变成了执行$username['username'][0]。同样的,isset($username['username']['surname']),其实就是$username['username'][0],值存在,自然为true