我已经在这个问题上工作了几天了。我想创建一个数组,其中包含一个用户ID列表,其中包含以下数据列表中value1和value2的总和。
User ID value1 Value2
1 21 2
2 2 6
3 4 43
1 3 9
2 17 8
1 12 28
这是我各种尝试的合并。这一切都是错的,但传达了我想要做的事情。
$members_list = array();
if(!in_array($user_id, $members_list)){
array_push($members_list, $user_id);
}
foreach($data_table as $data_row){
if($user_id == $data_row['$user_id']) {
$members_list[$_user_id]['total'] = $members_list[$user_id]['total'] + $data_row['value1'] + $data_row['value2'];
}
}
我正在努力教自己如何编程,并且可能缺乏对如何组织和循环多维数组的基本理解。希望有人能帮助我解决这个问题。提前谢谢。
答案 0 :(得分:0)
我想我会写:
$members_list = array();
foreach($data_table as $data_row){
if(isset($members_list[$data_row['$user_id']]) == false ) {
$members_list[$user_id] = 0;
}
$members_list[$_user_id]['total'] += ($data_row['value1'] + $data_row['value2']);
}
或者您计划添加有关每个成员的更多信息?在这种情况下,您可以为每个成员创建一个数组而不是一个数字。
在这种情况下你使用
$members_list[$user_id] = array();
$members_list[$user_id]['total'] = 0;
if语句中的。
答案 1 :(得分:0)
嗯,这将是我认为你正在寻找的一个虚拟的例子......
首先,这是你的多维数组:
$users = array(
array('user_id' => 1, 'value1' => 21, 'value2' => 2),
array('user_id' => 2, 'value1' => 2, 'value2' => 6),
array('user_id' => 3, 'value1' => 4, 'value2' => 43),
array('user_id' => 1, 'value1' => 3, 'value2' => 9),
array('user_id' => 2, 'value1' => 17, 'value2' => 8),
array('user_id' => 1, 'value1' => 12, 'value2' => 28)
);
其次,遍历用户列表,按user_id分组并为每个用户添加第三个键(总值):
$members_list = array();
foreach ($users as $user)
{
if ( !array_key_exists($user['user_id'], $members_list) )
$members_list[$user['user_id']] = $user['value1'] + $user['value2'];
else
$members_list[$user['user_id']] += $user['value1'] + $user['value2'];
}
答案 2 :(得分:0)
所以你的数组应该是这样的:
$myArray = array("userId" => array("value1", "value2"));
因此,我将使用您列表中的一些值作为示例:
$users = array(
1 => array(21, 2),
2 => array(2, 6),
3 => array(4,43)
);
因此,使用此数组可以随意测试它:
foreach ($users as $user => $values) {
echo "<b>USER:".$user."</b> -> ";
$sum = 0;
foreach ($values as $value) {
echo $value.", ";
$sum = $sum + $value;
}
echo " Sum: ".$sum."<br>";
}
你应该得到这个输出:
USER:1 -> 21, 2, Sum: 23
USER:2 -> 2, 6, Sum: 8
USER:3 -> 4, 43, Sum: 47
这对你有帮助吗?