Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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_Multidimensional Array - Fatal编程技术网

创建PHP数组';它在飞

创建PHP数组';它在飞,php,multidimensional-array,Php,Multidimensional Array,我正经历着最糟糕的时刻,试图让这个工作。在下面的代码中,我从数据库查询中收集数据,并尝试构建一个多维数组对象,该对象将以特定的方式保存总计和汇总某些信息。问题是,不是得到一个应该递增的值,而是该值似乎受到上次分配给它的值的影响。代码如下: $REVIEWS = array(); $USER_REVIEWS = array(); $USER_IMGREVS = array(); pseudo-code: loop her

我正经历着最糟糕的时刻,试图让这个工作。在下面的代码中,我从数据库查询中收集数据,并尝试构建一个多维数组对象,该对象将以特定的方式保存总计和汇总某些信息。问题是,不是得到一个应该递增的值,而是该值似乎受到上次分配给它的值的影响。代码如下:

        $REVIEWS      = array();
        $USER_REVIEWS = array();
        $USER_IMGREVS = array();


        pseudo-code: loop here which iterates over the DB results creating
        $date - which is into this function as its called for each day of month
        $p1user - which is one of the users (there are 3) 'levels' of users
        $hr - is the hour which is built from the transaction's timestamp

        $hr     = date('H', $row['P1TIMESTAMP']);
        $p1user = $row['P1USER'];

        $REVIEWS[$date] += 1;
        $USER_REVIEWS[$date][$p1user][$hr] += 1;
        $USER_IMGREVS[$date][$p1user][$hr] += $row['F5'];

        print "PASS1<br/>\n";
        print "Value of Total Reviews: [".$REVIEWS[$date]."]<br/>\n";
        print "Value of User Reviews: [".$USER_REVIEWS[$date][$p1user][$hr]."]<br/>\n";
        print "Value of Reviewed Images: [".$USER_IMGREVS[$date][$p1user][$hr]."]<br/>\n";
        print "<br/><br/>\n";
$REVIEWS=array();
$USER_REVIEWS=array();
$USER_IMGREVS=array();
伪代码:这里的循环,它遍历数据库结果创建
$date-此函数中的日期,作为每月每天调用的日期
$p1user-其中一个用户(有3个“级别”的用户)
$hr-是根据事务的时间戳构建的小时数
$hr=日期('H',$row['P1TIMESTAMP']);
$p1user=$row['p1user'];
$REVIEWS[$date]+=1;
$USER_REVIEWS[$date][$p1user][$hr]+=1;
$USER\u IMGREVS[$date][$p1user][$hr]+=$row['F5'];
打印“PASS1
\n”; 打印“总评论的价值:[“$Reviews[$date]。”]
\n; 打印“用户评论的价值:[”$User\u评论[$date][$p1user][$hr]。“]
\n”; 打印“已审核图像的值:[“$USER\u IMGREVS[$date][$p1user][$hr]。”]
\n; 打印“

\n”;

因此,每次我打印这篇文章时,“总评论”都会增加1,这是应该的。到现在为止,一直都还不错。接下来的两个数组将只打印最后分配的值,而不会像应该的那样添加在一起。为什么不呢?我试图用另一种方式来实现这一点,一个接一个地创建数组,并将它们整体分配给包含它们的数组,但这似乎也不起作用。有什么见解吗?

先生,我不太明白为什么你的女同学不工作,但在我的第一次测试中,我会改变以下几行:

$count = 1;
$USER_REVIEWS[$count][$p1user][$hr] += 1;
$USER_IMGREVS[$count][$p1user][$hr] += $row['F5'];
$count++;

请检查此代码是否对您有帮助。

我不知道您如何初始化数组,也许这会有帮助:

// replace this 2 lines:
$USER_REVIEWS[$date][$p1user][$hr] += 1;
$USER_IMGREVS[$date][$p1user][$hr] += $row['F5'];

// with this code:
if (!isset($USER_REVIEWS[$date]))
    $USER_REVIEWS[$date] = array();
if (!isset($USER_REVIEWS[$date][$p1user]))
    $USER_REVIEWS[$date][$p1user] = array();
if (!isset($USER_REVIEWS[$date][$p1user][$hr]))
    $USER_REVIEWS[$date][$p1user][$hr] = 0;
$USER_REVIEWS[$date][$p1user][$hr] += 1;

if (!isset($USER_IMGREVS[$date]))
    $USER_IMGREVS[$date] = array();
if (!isset($USER_IMGREVS[$date][$p1user]))
    $USER_IMGREVS[$date][$p1user] = array();
if (!isset($USER_IMGREVS[$date][$p1user][$hr]))
    $USER_IMGREVS[$date][$p1user][$hr] = 0;
$USER_IMGREVS[$date][$p1user][$hr] += $row['F5'];

这些值的打印语句取决于$p1user的值:

print "Value of User Reviews: [".$USER_REVIEWS[$date][$p1user][$hr]."]<br/>\n";
print "Value of Reviewed Images: [".$USER_IMGREVS[$date][$p1user][$hr]."]<br/>\n";
print“用户评论的价值:[”$User\u评论[$date][$p1user][$hr]。“]
\n”; 打印“已审核图像的值:[“$USER\u IMGREVS[$date][$p1user][$hr]。”]
\n;
如果您想为所有用户打印它,您应该循环所有可能的用户,而不仅仅是使用$p1user。要么这样,要么把它们加起来,如果你想要它们的总数的话


编辑:困扰我的是您的数据结构。它似乎不能很好地表示您的数据。在您的循环中,为什么不建立一些有用的信息,存储在review数组的底部?

我们可以在上面创建数组其他部分的代码吗?打印数组的
并查看其结构。您可以提供更多代码吗?你在哪里初始化你的数组,收集数据的循环,等等…太棒了!显然,如果不先告诉PHP新的引用是针对数组的,我就无法动态创建数组。我习惯于使用perl,因为这是不必要的。多谢各位。