我有一个多维数组$voucher_data
与以下数组:
array(6) {
[0]=>
array(5) {
["voucher_id"]=>
string(1) "1"
["menu_id"]=>
string(3) "521"
["qty"]=>
string(1) "2"
["variant_menu_id"]=>
string(1) "2"
["voucher_menu_id"]=>
string(1) "3"
}
[1]=>
array(5) {
["voucher_id"]=>
string(1) "1"
["menu_id"]=>
string(3) "521"
["qty"]=>
string(1) "2"
["variant_menu_id"]=>
string(1) "6"
["voucher_menu_id"]=>
string(1) "3"
}
[2]=>
array(5) {
["voucher_id"]=>
string(1) "1"
["menu_id"]=>
string(3) "521"
["qty"]=>
string(1) "1"
["variant_menu_id"]=>
string(1) "1"
["voucher_menu_id"]=>
string(1) "4"
}
[3]=>
array(5) {
["voucher_id"]=>
string(1) "1"
["menu_id"]=>
string(3) "521"
["qty"]=>
string(1) "1"
["variant_menu_id"]=>
string(1) "6"
["voucher_menu_id"]=>
string(1) "4"
}
[4]=>
array(5) {
["voucher_id"]=>
string(1) "1"
["menu_id"]=>
string(3) "519"
["qty"]=>
string(1) "2"
["variant_menu_id"]=>
NULL
["voucher_menu_id"]=>
string(1) "1"
}
[5]=>
array(5) {
["voucher_id"]=>
string(1) "1"
["menu_id"]=>
string(3) "525"
["qty"]=>
string(1) "3"
["variant_menu_id"]=>
NULL
["voucher_menu_id"]=>
string(1) "2"
}
}
在我的数组[0]
和[1]
中,voucher_menu_id
是3
。它们有相同的voucher_menu_id
和[2]
[3]
是4
所以我想把variant_menu_id
变成1数组变成这样:
array(4) {
[0]=>
array(5) {
["voucher_id"]=>
string(1) "1"
["menu_id"]=>
string(3) "521"
["qty"]=>
string(1) "2"
["variant_menu_id"]=>
array(2){
string(1) "2"
string(1) "6"
}
["voucher_menu_id"]=>
string(1) "3"
}
[1]=>
array(5) {
["voucher_id"]=>
string(1) "1"
["menu_id"]=>
string(3) "521"
["qty"]=>
string(1) "1"
["variant_menu_id"]=>
array(2){
string(1) "1"
string(1) "4"
}
["voucher_menu_id"]=>
string(1) "4"
}
}
[2]=>
array(5) {
["voucher_id"]=>
string(1) "1"
["menu_id"]=>
string(3) "519"
["qty"]=>
string(1) "2"
["variant_menu_id"]=>
NULL
["voucher_menu_id"]=>
string(1) "1"
}
[3]=>
array(5) {
["voucher_id"]=>
string(1) "1"
["menu_id"]=>
string(3) "525"
["qty"]=>
string(1) "3"
["variant_menu_id"]=>
NULL
["voucher_menu_id"]=>
string(1) "2"
}
}
伙计们,你们能帮我怎么把它组合起来吗?
谢谢(:
就像上面的注释一样,只需使用voucher_menu_id
作为分配新容器的键。使用它,当你loop:
$new_array = array();
foreach ($voucher_data as $v) {
if(empty($new_array[$v['voucher_menu_id']])) { // if empty initialize
$new_array[$v['voucher_menu_id']] = $v; // base array group
$new_array[$v['voucher_menu_id']]['variant_menu_id'] = array(); // intialize container
}
// push id
$new_array[$v['voucher_menu_id']]['variant_menu_id'][] = $v['variant_menu_id'];
}
$new_array = array_values($new_array); // array reindex
未经测试,但这样的东西可能会起作用:
$output = array();
foreach ($array as $entry) {
// make the variant_menu_id an array
$entry['variant_menu_id'] = (array) $entry['variant_menu_id'];
$key = $entry['voucher_menu_id'];
if (!array_key_exists($key, $output)) {
// create a new entry in the output array using the entire $entry
$output[$key] = $entry;
continue;
}
// otherwise, add your variant menu ID to the existing values
$output[$key]['variant_menu_id'] = array_merge($output[$key]['variant_menu_id'], $entry['variant_menu_id']);
}
这将通过按voucher_menu_id
对条目进行分组,并将variant_menu_id
的值添加到$output
中的数组中来创建一个新的数组。