PHP未定义的数组查找索引

时间:2015-12-23 03:02:25

标签: php arrays

我在文本文件中有一个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">&times;</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)){

1 个答案:

答案 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()