在单个数组中组合多个ID的PHP数组
如果我想为类似的ID创建这样的数组 那我怎么才能做到呢在单个数组中组合多个ID的PHP数组,php,Php,如果我想为类似的ID创建这样的数组 那我怎么才能做到呢 Array ( [0] => Array ( [transaction_user_id] => 359691e27b23f8ef3f8e1c50315cd506 [transaction_no] => 19500912050218 [transaction_total_amount] => 589.00
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代码以获得此提示吗?我还没有运行此代码。请运行并让我知道它是否工作??