gpt4 book ai didi

php - 合并数组,将值相加

转载 作者:行者123 更新时间:2023-11-30 00:08:49 25 4
gpt4 key购买 nike

我的数据库中有两个表:

网络历史记录

搜索词 |用户 ID |日期 |有位置 |历史ID

位置历史记录。

用户 ID |日期 |纬度 |液化天然气|金额 |历史ID

我正在排队。

网络历史记录:

$stmt_hour = $conn->prepare("SELECT HOUR(date) as hr, COUNT(*) as num_rows FROM    
webHistory WHERE userId=? AND date BETWEEN (SYSDATE() - INTERVAL 1 DAY)
AND SYSDATE() GROUP BY HOUR(date);");

$stmt_hour->bind_param("s", $userid);
$stmt_hour->execute();
$stmt_hour->bind_result($a, $b, $c);
while($stmt_hour->fetch()) {
$hourArr[$a] = $c;
}

位置历史记录

$stmt_hour = $conn->prepare("SELECT HOUR(date) as hr, COUNT(*) as num_rows FROM    
locationHistory WHERE userId=? AND date BETWEEN (SYSDATE() - INTERVAL 1 DAY)
AND SYSDATE() GROUP BY HOUR(date);");

$stmt_hour->bind_param("s", $userid);
$stmt_hour->execute();
$stmt_hour->bind_result($a, $b, $c);
while($stmt_hour->fetch()) {
$hourLocArr[$a] = $c;
}

当用户使用某个单词进行搜索时,它会在 webHistory 中写入一行,因此为了获取用户在过去 24 小时内进行的所有搜索,我会计算两个日期之间的行数。

当用户按位置搜索时,系统会检查数据库以查看用户是否已经在该位置搜索过,如果是,则数量会增加,如果没有,则在行中添加值 1。然后我从第二个查询中获取其总和。

最后,如果用户通过单词和查询进行搜索,则这两个操作都会将行添加到 webHistory 中并在 locationHistory 中添加/递增。

我需要将查询 1 的响应添加到查询 2 的响应中,格式为小时 => 金额。所以:

查询“网络历史记录”:

10 => 9
16 => 4
20 =>2

查询位置历史记录

4 => 45
10 => 2
22 => 12

查询+位置总和

4 => 45
10 => 11
16 => 4
20 => 2
22 => 12

最后,如果按单词和查询搜索,我只需要获取位置值,我想我会通过唯一的 ID 来做到这一点。到目前为止,我确实有一个唯一的 Id 字段。但是,随着 locationHistory 增加 amount 字段,从而导致唯一 id 仅为最新的 ID,并且对于此问题来说是多余的,我不确定如何处理它。

我正在考虑将数组组合起来以简单地使用 array_marge()?但这将是解决这个问题的最佳方法,最重要的是我将如何处理问题的后半部分。

干杯

最佳答案

阅读 stackoverflow 后由于本段,数组联合是你最好的选择(对于第二个问题)

The + operator returns the right-hand array appended to the left-hand array; for keys that exist in both arrays, the elements from the left-hand array will be used, and the matching elements from the right-hand array will be ignored.

$webHistory = array(10 => 9,
16 => 4,
20 =>2);

$locationHistory = array(4 => 45,
10 => 2,
22 => 12);

print_r($locationHistory + $webHistory );

->Array ( [4] => 45 [10] => 2 [22] => 12 [16] => 4 [20] => 2 )

它保留 key 并使用 locationHistory 作为信息的主要来源。 :D

因此,请确保将 webhistory 合并到 locationhistory 中,这样如果它们重叠,位置就会覆盖以前的值。

编辑

下面解决第一个问题

$webHistory = array(10 => 9,
16 => 4,
20 =>2);

$locationHistory = array(4 => 45,
10 => 2,
22 => 12);

$tempArray = $locationHistory;
foreach ($webHistory as $key => $value){
$tempArray[$key] = $value + $tempArray[$key];
}
print_r($tempArray);

->Array ( [4] => 45 [10] => 11 [22] => 12 [16] => 4 [20] => 2 )

关于php - 合并数组,将值相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24269518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com