解决方案 »
- 用fsockopen POST数据大问题,有=号就读取错误!!
- IIS的unlink()没反应
- 求一段以每一周做出列表.
- 一个公司给我发的初级面试题 大家看看 我是不是很菜
- 替换字符串中的 网址为超链接
- 推荐一款好点的 php开源的 流量统计
- Discuz在搜索时把关键词放入数据库的意义何在
- 在PHP中删除数据库记录[菜人问题]
- 在我安装PHP时,出现以下错误,不知道如何解决Security Alert! PHP CGI cannot be accessed directly.
- $now = new DateTime;出错,奇怪了。
- mysql主从同步问题
- 请教:查询DB后相同类型的记录合并为一行显示且可展开。
会得到相同的结果
这一点你可以用 var_dump 观察到array_keys($arr, 'aa')
是返回值为 aa 的元素的键
当值为 0 时, 'aa' == 0 因为一边是数值,所以 aa 会转换为 0 进行比较,表达式成立
当值为 '0' 时, 'aa' == '0' 因为两边是字符串,无需转换,表达式不成立成立
function getKey($arr) {
return $arrKey = array_keys($arr, 'aa');
} $testArr = array('0'=>'XX','aa'=>'XX','1'=>'YY','bb'=>'YY','2'=>'ZZ','cc'=>'ZZ');
$array1 = array_keys($testArr);
$array2 = array('0', 'aa', '1', 'bb', '2','cc'); var_dump($array1);
echo '<br>';
var_dump($array2);
echo '<br>';
print_r(getKey($array1));
echo '<br>';
print_r(getKey($array2));
echo '<br>'; $arr = array(0,'xx',0,'bb');
print_r(array_keys($arr, 'aa'));
?>
得到的结果:
array
0 => int 0
1 => string 'aa' (length=2)
2 => int 1
3 => string 'bb' (length=2)
4 => int 2
5 => string 'cc' (length=2)array
0 => string '0' (length=1)
1 => string 'aa' (length=2)
2 => string '1' (length=1)
3 => string 'bb' (length=2)
4 => string '2' (length=1)
5 => string 'cc' (length=2)Array ( [0] => 0 [1] => 1 )
Array ( [0] => 1 )
Array ( [0] => 0 [1] => 2 )
看出什么了吗 array_keys(array,value,strict)php是弱语言数字0被当成某个字符处理了 所以strict要指定为true
如果 strict 参数指定为 true,则 PHP 会使用全等比较 (===) 来严格检查键值的数据类型。