我在文本文件中有一个IP列表。我想获取用户的IP,然后在数组中计算,看看他们是否发出了超过2个请求。
但是我得到了
<div class="modal fade" id="myModalRemarks<?php echo $row1['receiver_id'];?>" role="dialog">
<div class="modal-dialog">
<!-- Modal content -->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Remarks</h4>
</div>
<div class="modal-body">
<?php echo $row1['remarks']; ?>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
其中
Undefined index: xx.xxx.xxx.xx
(隐藏原因显而易见)
当我在txt文件中有两个以上相同的IP时,它会返回“查找次数太多”。但如果在数组中找不到$值,则返回未定义的索引。我以为我有抓住了!但是如果我删除了!它只是运行请求。如果我把它保持为!isset它会运行,但然后返回未定义的索引。
我甚至尝试过
xx.xxx.xxx.xx is my IP.
但没有。有什么想法吗?
if(array_key_exists($value, $array_list)){
答案 0 :(得分:4)
您似乎混淆了数组值和数组键
爆炸返回一个数组,其中字符串中的所有项都是值,而键只是从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(n是列表中的多个IP)。每个键都有一个对应的值,这些值是实际的IP。
所以现在当你运行
if(!isset($array_list[$value])){
您告诉PHP要做的是在阵列中找到与您的IP匹配的密钥的条目。除了阵列中没有键是IP地址。
如果要查明数组中是否存在某个值,请使用array_search()。或者在您的情况下,因为您通过array_count_values()
运行列表,将值转换为键,您可以正常{{1运行函数后查找 $ values 变量。
isset()