Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
文本文件中的PHP多维数组_Php_Arrays_Multidimensional Array - Fatal编程技术网

文本文件中的PHP多维数组

文本文件中的PHP多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我在这里寻求帮助。 我试图解析一个以空格分隔的文本文件,并创建一个多维数组。数据文件是Apache2日志文件,但这种经验将适用于许多文本文件 我要做的是读取一条记录(一行),然后: 1.提取源ip地址。 2.检查以前是否看到过此ip地址。 3.提取数据包的目标端口。 4.此ip地址已将数据包发送到此端口的次数总和 因此,在概念上: SRC-IP端口总数 ----------------------------------- 111.222.111.222-22-3次 232.1.45.8-23-

我在这里寻求帮助。 我试图解析一个以空格分隔的文本文件,并创建一个多维数组。数据文件是Apache2日志文件,但这种经验将适用于许多文本文件

我要做的是读取一条记录(一行),然后: 1.提取源ip地址。 2.检查以前是否看到过此ip地址。 3.提取数据包的目标端口。 4.此ip地址已将数据包发送到此端口的次数总和

因此,在概念上:

SRC-IP端口总数
-----------------------------------
111.222.111.222-22-3次
232.1.45.8-23-23次
-80-1次
-5353-2次
217.163.132.190-23-12次
我可以打开文件并提取源ip,检查以确保其唯一性,如果是,则将其放入数组中。我搞不懂的是如何将目标端口添加为数组中的第二个字段,更不用说如何将所述dest端口的计数添加为数组中的第三个字段。 我在www.php.net上找到的所有示例都过于简单,基本上只是手工填充多维数组。似乎没有人演示如何创建多维数组,然后解释如何以编程方式填充维度

以下是脚本: ` 这是输出的最后一行: 1154个从302个唯一ip地址丢弃的数据包

如果我正在处理的一大块数据有帮助,请告诉我。 这只是一个防火墙日志

任何帮助都将不胜感激。 干杯 特里。

更新:

if (($handle = fopen("firewall", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, " ")) !== FALSE) {
        if (!isset($src_ip[$data[8]])) {
            $src_ip[$data[8]] = array();
        }
        foreach ($data as $value) {
            if (strstr($value, $dest_port)) {
                if (!isset($src_ip[$data[8]][$value]))
                    $src_ip[$data[8]][$value] = array('count' => 0);

                $src_ip[$data[8]][$value]['count'] += (int)$THIS_ROWS_COUNT;
                print($data[8]) . " ";
                print($value) . "\n";
            }
        }
        $row++;
    }
}

$arr[$ip][$port][]=array(…此处的其他数据字段)
?尝试获取类似的内容,是的。泰!我在我原来的帖子中看到有几行被截断了//
if (($handle = fopen("firewall", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, " ")) !== FALSE) {
        if (!isset($src_ip[$data[8]])) {
            $src_ip[$data[8]] = array();
        }
        foreach ($data as $value) {
            if (strstr($value, $dest_port)) {
                if (!isset($src_ip[$data[8]][$value]))
                    $src_ip[$data[8]][$value] = array('count' => 0);

                $src_ip[$data[8]][$value]['count'] += (int)$THIS_ROWS_COUNT;
                print($data[8]) . " ";
                print($value) . "\n";
            }
        }
        $row++;
    }
}