在单个数组中组合多个ID的PHP数组

在单个数组中组合多个ID的PHP数组,php,Php,如果我想为类似的ID创建这样的数组 那我怎么才能做到呢 Array ( [0] => Array ( [transaction_user_id] => 359691e27b23f8ef3f8e1c50315cd506 [transaction_no] => 19500912050218 [transaction_total_amount] => 589.00

如果我想为类似的ID创建这样的数组 那我怎么才能做到呢

Array
(
    [0] => Array
        (
            [transaction_user_id] => 359691e27b23f8ef3f8e1c50315cd506
            [transaction_no] => 19500912050218
            [transaction_total_amount] => 589.00
            [transaction_date] => 1335932419
            [transaction_status] => cancelled
        )

    [1] => Array
        (
            [transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d
            [transaction_no] => 36010512050819
            [transaction_total_amount] => 79.00
            [transaction_date] => 1336476696
            [transaction_status] => cancelled
        )

    [2] => Array
        (
            [transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d
            [transaction_no] => 19020512050820
            [transaction_total_amount] => 299.00
            [transaction_date] => 1336476739
            [transaction_status] => cancelled
        )

    [3] => Array
        (
            [transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d
            [transaction_no] => 27050512050821
            [transaction_total_amount] => 79.00
            [transaction_date] => 1336476927
            [transaction_status] => cancelled
        )

    [4] => Array
        (
            [transaction_user_id] => 8e9050a3646c98342b9ba079fba80982
            [transaction_no] => 12070512050822
            [transaction_total_amount] => 129.00
            [transaction_date] => 1336477032
            [transaction_status] => cancelled
        )

)
[4] => Array
        (
            [transaction_user_id] => 8e9050a3646c98342b9ba079fba80982
            [transaction_no] => 12070512050822
            [transaction_total_amount] => array(
                 array('price'=>129.00),
                 array('price'=>79.00)
            )
            [transaction_date] => 1336477032
            [transaction_status] => cancelled
        );
我怎样才能做到这一点

Array
(
    [0] => Array
        (
            [transaction_user_id] => 359691e27b23f8ef3f8e1c50315cd506
            [transaction_no] => 19500912050218
            [transaction_total_amount] => 589.00
            [transaction_date] => 1335932419
            [transaction_status] => cancelled
        )

    [1] => Array
        (
            [transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d
            [transaction_no] => 36010512050819
            [transaction_total_amount] => 79.00
            [transaction_date] => 1336476696
            [transaction_status] => cancelled
        )

    [2] => Array
        (
            [transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d
            [transaction_no] => 19020512050820
            [transaction_total_amount] => 299.00
            [transaction_date] => 1336476739
            [transaction_status] => cancelled
        )

    [3] => Array
        (
            [transaction_user_id] => 9def02e6337b888d6dbe5617a172c18d
            [transaction_no] => 27050512050821
            [transaction_total_amount] => 79.00
            [transaction_date] => 1336476927
            [transaction_status] => cancelled
        )

    [4] => Array
        (
            [transaction_user_id] => 8e9050a3646c98342b9ba079fba80982
            [transaction_no] => 12070512050822
            [transaction_total_amount] => 129.00
            [transaction_date] => 1336477032
            [transaction_status] => cancelled
        )

)
[4] => Array
        (
            [transaction_user_id] => 8e9050a3646c98342b9ba079fba80982
            [transaction_no] => 12070512050822
            [transaction_total_amount] => array(
                 array('price'=>129.00),
                 array('price'=>79.00)
            )
            [transaction_date] => 1336477032
            [transaction_status] => cancelled
        );
其中$myArr是您的数组。不过,我已经根据您的示例创建了示例数组。我已经运行了这段代码,并且在我这段代码中运行得很好。

试试这个:

$myArr = array(
array
    ('transaction_user_id' => '359691e27b23f8ef3f8e1c50315cd506',
    'transaction_no' => '19500912050218',
    'transaction_total_amount' => '589.00',
    'transaction_date' => '1335932419',
    'transaction_status' => 'cancelled'
),
array
    ('transaction_user_id' => '359691e27b23f8ef3f8e1c50315cd506',
    'transaction_no' => '19500912050218',
    'transaction_total_amount' => '589.00',
    'transaction_date' => '1335932419',
    'transaction_status' => 'cancelled'
),
array
    ('transaction_user_id' => '359691e27b23f8rf3f8e1c50315cd506',
    'transaction_no' => '19500912050218',
    'transaction_total_amount' => '589.00',
    'transaction_date' => '1335932419',
    'transaction_status' => 'cancelled'
)
);

$newArr = array();
array_walk($myArr, "myfunc");

function myfunc(&$arr, $index) {
    global $newArr;
    $is_avail = false;
    $avail_index = 0;
    if (count($newArr) > 0) {
        foreach ($newArr as $key => $item) {
            if (in_array($arr['transaction_user_id'], $item)) {
                $is_avail = true;
                $avail_index = $key;
                break;
            }
        }
    }
    if ($is_avail) {
        array_push($newArr[$avail_index]['transaction_total_amount'], array("price" => $arr['transaction_total_amount']));
    } else {
        $newArr[] = $arr;
        $newArr[count($newArr) - 1]['transaction_total_amount'] = array(array("price" => $newArr[count($newArr) - 1]['transaction_total_amount']));
    }
}

print_r($newArr);
方法1

$old_data = array
(
    array ("transaction_user_id" => '359691e27b23f8ef3f8e1c50315cd506', "transaction_no" => '19500912050218', "transaction_total_amount" => '589.00', "transaction_date" => '1335932419', "transaction_status" => 'cancelled'),
    array ("transaction_user_id" => '9def02e6337b888d6dbe5617a172c18d', "transaction_no" => '36010512050819', "transaction_total_amount" => '79.00', "transaction_date" => '1336476696', "transaction_status" => 'cancelled'),
    array ("transaction_user_id" => '9def02e6337b888d6dbe5617a172c18d', "transaction_no" => '19020512050820', "transaction_total_amount" => '299.00', "transaction_date" => '1336476739', "transaction_status" => 'cancelled'),
    array ("transaction_user_id" => '9def02e6337b888d6dbe5617a172c18d', "transaction_no" => '27050512050821', "transaction_total_amount" => '79.00', "transaction_date" => '1336476927', "transaction_status" => 'cancelled'),
    array ("transaction_user_id" => '8e9050a3646c98342b9ba079fba80982', "transaction_no" => '12070512050822', "transaction_total_amount" => '129.00', "transaction_date" => '1336477032', "transaction_status" => 'cancelled')
);
方法2

$unique_data = array();
foreach ($old_data as $inner_array) {
    $unique_data[$inner_array['transaction_user_id']][] = $inner_array;
}

foreach ($unique_data as $index => $inner_array) {
    $unique_data[$index]['grand_total'] = 0;

    foreach ($inner_array as $value) {
        $unique_data[$index]['grand_total'] += $value['transaction_total_amount'];
    }
}
要查看数组结果的输出:

$unique_data = array();
foreach ($old_data as $inner_array) {
    $unique_data[$inner_array['transaction_user_id']]['transactions'][] = $inner_array;
}

foreach ($unique_data as $index => $inner_array) {
    $unique_data[$index]['grand_total'] = 0;

    foreach ($inner_array['transactions'] as $value) {
        $unique_data[$index]['grand_total'] += $value['transaction_total_amount'];
    }
}

什么我不知道你想要什么。请清楚地描述您的问题Lyso您是说您希望交易总额是另一个数组,并且您不确定如何执行此操作?提示:使用循环并创建交易id索引并对其进行分组。是,在这方面,请帮助我将类似的ids数据合并到一个数组中,并将事务总量合并到一个嵌套数组中?您能为我提供php代码以获得此提示吗?我还没有运行此代码。请运行并让我知道它是否工作??