首页 / PHP / PHP数组查找中的未定义索引
PHP数组查找中的未定义索引
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP数组查找中的未定义索引,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1918字,纯文字阅读大概需要3分钟。
内容图文
![PHP数组查找中的未定义索引](/upload/InfoBanner/zyjiaocheng/682/0df0702926ac48bd9361b29a33aa10fd.jpg)
我在文本文件中有一个IP列表.我想获取用户的IP,然后将其计入数组以查看他们是否发出了2个以上的请求.
但是我越来越
Undefined index: xx.xxx.xxx.xx
哪里
xx.xxx.xxx.xx is my IP.
(出于明显的原因隐藏)
当我在txt文件中有两个以上相同的IP时,它将返回“查找过多”,但如果在数组中未找到$value,则它将返回未定义的索引.我以为我对!isset有所了解,但是如果我删除!,它只是运行请求.如果我将其保留为!isset,它将运行,但随后返回未定义的索引.
我什至尝试过
if(array_key_exists($value, $array_list)){
但是什么都没有.有什么想法吗?
$list = file_get_contents('ips.txt');
// convert to array
$array_list = (explode(" ",$list));
// Get user's ip
$value = $_SERVER['REMOTE_ADDR'];
if(!isset($array_list[$value])){
$values = array_count_values($array_list);
$count = $values[$value];
if ($count > 2) {
return 'Too many lookup attempts, please try again in 24 hours click <a href="/">HERE</a> to return home';
}
}
else {
// run the ok request
}
解决方法:
看来您混淆了数组值和数组键
Explode返回一个数组,其中字符串中的所有项目都是值,而键只是从0开始的数字.请看下面的示例:
$string = "foo bar baz";
$array = explode(' ', $string);
/*
* Array now holds
* [0] => "foo",
* [1] => "bar",
* [2] => "baz",
*/
在示例中,0,1,2是键,foo,bar,baz是值.
所以当你执行
// convert to array
$array_list = (explode(" ",$list));
您的密钥是数字0-n(无论列表中有多少IP,n都是).每个密钥都有一个对应的值,这些值是实际的IP.
所以现在当你跑步
if(!isset($array_list[$value])){
您告诉PHP要做的是在数组中找到一个条目,该条目的键与您的IP匹配.除非阵列中的任何键都不是IP地址.
如果要确定数组中是否存在某个值,请使用array_search().或者,在这种情况下,由于要通过array_count_values()运行列表,它将值转换为键,因此可以执行常规的isset( )在运行函数后在$values变量上查找.
$values = array_count_values($array_list); // Each IP is now a key of $values
if (isset($values[$value])) {
// The IP shows up at least once
$count = $values[$value];
// continue with other logic here
}
else {
// The IP is not in the list
// continue with other logic here
}
内容总结
以上是互联网集市为您收集整理的PHP数组查找中的未定义索引全部内容,希望文章能够帮你解决PHP数组查找中的未定义索引所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。