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
)
)
,如果我想让这个数组像这样,用于类似的id那我怎么才能做到呢?
[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 = 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);
,其中$myArr
是您的数组。我已经从你的例子中创建了示例数组。我已经运行了这段代码,并在我的结束工作良好。
试试这个:
$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')
);
方法1
$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'];
}
}
方法2
$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'];
}
}
查看数组结果的输出:
echo "<pre>";
print_r($unique_data);
echo "</pre>";
exit();