PHP多维数组数据分组和添加值

时间:2014-10-21 13:29:23

标签: php arrays loops multidimensional-array

我已经在这个问题上工作了几天了。我想创建一个数组,其中包含一个用户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'];
    }
}

我正在努力教自己如何编程,并且可能缺乏对如何组织和循环多维数组的基本理解。希望有人能帮助我解决这个问题。提前谢谢。

3 个答案:

答案 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

这对你有帮助吗?