Automattic\WooCommerce\Admin\API\Reports
Segmenter::merge_segment_totals_results
Merges segmented results for totals response part.
E.g. $r1 = array(
0 => array( 'product_id' => 3, 'net_amount' => 15, ),
); $r2 = array(
0 => array( 'product_id' => 3, 'avg_order_value' => 25, ),
);
$merged = array(
3 => array( 'segment_id' => 3, 'subtotals' => array( 'net_amount' => 15, 'avg_order_value' => 25, ) ),
);
Method of the class: Segmenter{}
No Hooks.
Returns
Array.
Usage
// protected - for code of main (parent) or child class $result = $this->merge_segment_totals_results( $segment_dimension, $result1, $result2 );
- $segment_dimension(string) (required)
- Name of the segment dimension=key in the result arrays used to match records from result sets.
- $result1(array) (required)
- Array 1 of segmented figures.
- $result2(array) (required)
- Array 2 of segmented figures.
Segmenter::merge_segment_totals_results() Segmenter::merge segment totals results code WC 10.4.3
protected function merge_segment_totals_results( $segment_dimension, $result1, $result2 ) {
$result_segments = array();
$segment_labels = $this->get_segment_labels();
foreach ( $result1 as $segment_data ) {
$segment_id = $segment_data[ $segment_dimension ];
if ( ! isset( $segment_labels[ $segment_id ] ) ) {
continue;
}
unset( $segment_data[ $segment_dimension ] );
$result_segments[ $segment_id ] = array(
'segment_label' => $segment_labels[ $segment_id ],
'segment_id' => $segment_id,
'subtotals' => $segment_data,
);
}
foreach ( $result2 as $segment_data ) {
$segment_id = $segment_data[ $segment_dimension ];
if ( ! isset( $segment_labels[ $segment_id ] ) ) {
continue;
}
unset( $segment_data[ $segment_dimension ] );
if ( ! isset( $result_segments[ $segment_id ] ) ) {
$result_segments[ $segment_id ] = array(
'segment_label' => $segment_labels[ $segment_id ],
'segment_id' => $segment_id,
'subtotals' => array(),
);
}
$result_segments[ $segment_id ]['subtotals'] = array_merge( $result_segments[ $segment_id ]['subtotals'], $segment_data );
}
return $result_segments;
}