我有一个数组,$final_arr...which给出了下面的输出,然后我合并费用并创建一个新的数组。
Array
(
[0] => Array
(
[originator] =>Wayne
[niche] => Construction
[fee]=>30
)
[1] => Array
(
[originator] =>Josh
[niche] => Construction
[fee]=>30
)
[2] => Array
(
[originator] => Wayne
[niche] => Construction
[fee]=>50
)
[3] => Array
(
[originator] => Josh
[niche] => Construction
[fee]=>70
)
)
我使用下面的代码将它们合并:
$final_arr = array();
foreach($formEntries as $value){
if(isset($final_arr[$value['originator']])){
$final_arr[$value['originator']]['fee_potential'] += $value['fee_potential'];
} else{
$final_arr[$value['originator']] = $value;
$data_orgin[] = $value['originator'];
}
}
这给了我下面的输出,当I print_r($final_arr)时,所以现在的费用是总的,并且数组比以前更小。
Array
(
[Wayne] => Array
(
[originator] =>Wayne
[entries=> Construction
[fee]=>80
)
[Josh] => Array
(
[originator] =>Josh
[niche] => Construction
[fee]=>100
)
)
现在我想在子元素中推送这样的实体,但它不能很好地工作。
Array
(
[wayne] => Array
(
[originator] =>Wayne
[niche] => Construction
[fee]=>80
[sub]=>array(
Array
(
[1] => Array
(
[originator] =>Wayne
[niche] => Construction
[fee]=>30
)
[2] => Array
(
[originator] => Wayne
[niche] => Construction
[fee]=>50
)
)
)
)
[josh] => Array
(
[originator] =>Josh
[niche] => Construction
[fee]=>100
[sub]=>array(
Array
(
[1] => Array
(
[originator] =>josh
[niche] => Construction
[fee]=>30
)
[2] => Array
(
[originator] => josh
[niche] => Construction
[fee]=>70
)
)
)
)
)
发布于 2019-04-11 10:58:35
您可以尝试这样在foreach循环中获取下面sub中的所有值
foreach ($formEntries as $value) {
if (isset($final_arr[$value['originator']])) {
$final_arr[$value['originator']]['fee_potential'] = (!empty($final_arr[$value['originator']]['fee_potential']) ? $final_arr[$value['originator']]['fee_potential'] : 0) + (!empty($value['fee_potential']) ? $value['fee_potential'] : 0);
} else {
$final_arr[$value['originator']] = $value;
$data_orgin[] = $value['originator'];
}
$final_arr[$value['originator']]['sub'][] = $value; // new line for sub index
}
Demo。
发布于 2019-04-11 10:56:50
只需再添加一行,将$value
数组放入sub
数组即可
$final_arr = array();
foreach($formEntries as $value){
if(isset($final_arr[$value['originator']])){
$final_arr[$value['originator']]['fee_potential'] += $value['fee_potential'];
} else{
$final_arr[$value['originator']] = $value;
$data_orgin[] = $value['originator'];
}
// new line
$final_arr[$value['originator']]['sub'][] = $value;
}
https://stackoverflow.com/questions/55630722
复制相似问题