Php 计算一个数组

Php 计算一个数组,php,arrays,positioning,heatmap,Php,Arrays,Positioning,Heatmap,我有以下数据: a , b , c , d , e , f 375, 52, 1892, http://example.com, ::1, 1308233412 341, 52, 1892, http://example.com, ::1, 1308233412 422, 52, 1892, http://example.com, ::1, 1308233417 478, 50, 1892, http://example.com, ::1, 1308233

我有以下数据:

a  , b , c   , d                 , e  , f
375, 52, 1892, http://example.com, ::1, 1308233412
341, 52, 1892, http://example.com, ::1, 1308233412
422, 52, 1892, http://example.com, ::1, 1308233417
478, 50, 1892, http://example.com, ::1, 1308233418
58, 481, 1892, http://example.com, ::1, 1308233432
69, 481, 1892, http://example.com, ::1, 1308233432
487, 49, 1892, http://example.com, ::1, 1308233432
  • a=位置y
  • b=位置x
  • c=屏幕分辨率(浏览器)
  • d=主机
  • e=ip
  • f=时间戳
我想做的是,例如:

检查是否在50x50px框中,如果是,计数+1

所以我想要一张这样的桌子:

y/x |  0 | 50  | 100  | 150
----+----+-----+------+----
50  | 0  |  1  |   2  |   0
100 | 0  |  0  |   1  |   0
150 | 1  |  0  |   0  |   1
200 | 2  |  2  |   3  |   0
etc.
希望有人能帮我实现以上目标


下面的链接正在创建一个热图,但是热图是重叠的,所以我想把绿色的点放在一个数组中进行计数,那些在50x50范围内的区域将用另一种颜色高亮显示。很抱歉信息不准确

虽然这个问题措词不当,但我想我理解你的要求。这是你应该做的。我的php不是很流利,所以请确保查看我编写的代码片段,而不是复制/粘贴它们

  • 查找最大X和Y值
  • 基于这些值除以50,实例化并初始化二维数组
  • 例如,如果您想要
    Array[X][Y]
    ,您可以执行以下操作:

    $myArray = array();
    for ($x = 0; $x < $maxX / 50; $x++) {
        $myArray[] = array();
        for ($y = 0; $y < $maxY / 50; $y++) {
            $myArray[$x][] = 0;
        }
    }
    

    再说一次,我对php不在行,而且刚刚开始使用它,但这应该是一个好的开始。

    方框的坐标是:

    $x_coor = floor ($a / 50);
    $y_coor = floor ($b / 50);
    

    有了这些坐标,您可以将其填充到一个n维数组中。如果要查找空间填充曲线,请执行以下操作。sfc通常用于热图,并将2d复杂度降低到1d复杂度。你想看看Nick的hilbert curve空间四叉树博客。

    好的,我想我已经解决了这个问题(见我对上面问题的评论)

    我的方法是将X和Y位置除以50,然后使用
    floor()
    函数从中获得一个整数值。这将是他们将在其中的箱号

    然后可以很容易地将其填充到数组中

    以下代码将生成所需的数组:

    $map = array();
    foreach($data as $row) {
        $map[floor($row['x']/50)][floor($row['y']/50)]++;
    }
    
    然后可以将其打印到表中(行标题和列标题是单元格编号乘以50)


    您可能希望事先对
    $map
    数组进行零填充,以便在没有任何命中的单元格中得到零,或者您可以在打印它时计算出来;由您决定)

    首先,您需要用0填充一个数组:

    $result = array();
    for($i=0;$i<2000;$i+=50){
        $result[$i] = array();
        for($j=0;$j<2000;$j+=50){
            $result[$i][$j] = 0;
        }
    }
    

    UH检查50x50框中是否有什么?这个问题真的是关于
    计算数组php
    ?你能再解释一下矩阵吗?这些值的含义是什么?可以符合(x,y)指定尺寸的50x50个盒子的数量?@spudley,例如(375)=盒子(350-400)和(52)=盒子(50-100)@starx数据在一个数组中,所以我想我需要在array@rayrule:好的,我想我明白了。您希望将屏幕划分为50x50个框,用PHP数组表示,然后查看位置x和y字段以确定这些坐标所在的框。这是对你追求的东西的合理描述吗?这个问题很难理解,所以我希望我现在已经理解了。下面的链接是创建一个热图,但是热图是重叠的,所以我想把绿色的点放在一个被计数的数组中,这些区域将用另一种颜色高亮显示。很抱歉信息不好如果你想做的是创建一个热图,你应该先创建一个高度图。您首先要求创建的确实是一个高度贴图,但它将是一个参差不齐的高度贴图。尽管如此,我上面所说的应该考虑到你要求完成的事情。
    $result = array();
    for($i=0;$i<2000;$i+=50){
        $result[$i] = array();
        for($j=0;$j<2000;$j+=50){
            $result[$i][$j] = 0;
        }
    }
    
    foreach($a as $v){
        $result[floor($v[0]/50)*50][floor($v[1]/50)*50]++;
    }