- array_column: documentation ( source)
- array_search: documentation ( source)
- print_r: documentation ( source)
- array_values: documentation ( source)
- usort: documentation ( source)
<?php
$data = array (
'header' =>
array (
1 =>
array (
0 =>
array (
'col_pos' => 1,
'sortable' => 1,
'content' => 'Compare',
'ct_help' => 'Comparehelptext..'
),
1 =>
array (
'col_pos' => 2,
'sortable' => 1,
'content' => 'Product',
'ct_help' => 'Producthelptext..'
),
2 =>
array (
'col_pos' => 3,
'sortable' => 1,
'content' => 'TypeofCover',
'ct_help' => 'Typeofcoverhelptext..'
),
3 =>
array (
'col_pos' => 4,
'sortable' => 1,
'content' => 'RoadsideAssistance',
'ct_help' => 'Roadsideassistancehelptext...'
),
4 =>
array (
'col_pos' => 5,
'sortable' => 1,
'content' => 'NationwhideRecovery',
'ct_help' => 'NationwideRecoverhelptext...'
),
5 =>
array (
'col_pos' => 9,
'sortable' => 1,
'content' => 'Price',
'ct_help' => 'Pricehelptext...'
),
6 =>
array (
'col_pos' => 10,
'sortable' => 1,
'ct_help' => ''
)
)
),
'row' =>
array (
2 =>
array (
0 =>
array (
'col_pos' => 1,
'sortable' => 0,
'content' => 'Logo',
'ct_help' => ''
),
1 =>
array (
'col_pos' => 2,
'sortable' => 0,
'content' => 'Productcover2',
'sort_value' => 2,
'ct_help' => ''
),
2 =>
array (
'col_pos' => 3,
'sortable' => 0,
'content' => 'Vehicle&Personal2',
'sort_value' => 2,
'ct_help' => ''
),
3 =>
array (
'col_pos' => 4,
'sortable' => 0,
'content' => '<b>Yes</b>',
'sort_value' => 1,
'ct_help' => ''
),
4 =>
array (
'col_pos' => 5,
'sortable' => 0,
'content' => 'No',
'sort_value' => 0,
'ct_help' => ''
),
5 =>
array (
'col_pos' => 9,
'sortable' => 0,
'content' => 'from75GBP',
'sort_value' => 75,
'ct_help' => ''
),
6 =>
array (
'col_pos' => 10,
'sortable' => 0,
'content' => '<ahref=\\"#2\\">Visitsite></a>',
'ct_help' => ''
),
),
3 =>
array (
0 =>
array (
'col_pos' => 1,
'sortable' => 0,
'content' => 'Logo',
'ct_help' => ''
),
1 =>
array (
'col_pos' => 2,
'sortable' => 0,
'content' => 'Productcover3',
'sort_value' => 3,
'ct_help' => ''
),
2 =>
array (
'col_pos' => 3,
'sortable' => 0,
'content' => 'Vehicle&Personal3',
'sort_value' => 3,
'ct_help' => ''
),
3 =>
array (
'col_pos' => 4,
'sortable' => 0,
'content' => 'No',
'sort_value' => 0,
'ct_help' => ''
),
4 =>
array (
'col_pos' => 5,
'sortable' => 0,
'content' => '<b>Yes</b>',
'sort_value' => 1,
'ct_help' => ''
),
5 =>
array (
'col_pos' => 9,
'sortable' => 0,
'content' => 'from73GBP',
'sort_value' => 73,
'ct_help' => ''
),
6 =>
array (
'col_pos' => 10,
'sortable' => 0,
'content' => '<ahref=\\"#3\\">Visitsite></a>',
'ct_help' => ''
),
),
4 =>
array (
0 =>
array (
'col_pos' => 1,
'sortable' => 0,
'content' => 'Logo',
'ct_help' => ''
),
1 =>
array (
'col_pos' => 2,
'sortable' => 0,
'content' => 'Productcover4',
'sort_value' => 4,
'ct_help' => ''
),
2 =>
array (
'col_pos' => 3,
'sortable' => 0,
'content' => 'Vehicle&Personal4',
'sort_value' => 4,
'ct_help' => ''
),
3 =>
array (
'col_pos' => 4,
'sortable' => 0,
'content' => '<b>Yes</b>',
'sort_value' => 1,
'ct_help' => ''
),
4 =>
array (
'col_pos' => 5,
'sortable' => 0,
'content' => '<b>Yes</b>',
'sort_value' => 1,
'ct_help' => ''
),
5 =>
array (
'col_pos' => 9,
'sortable' => 0,
'content' => 'from84GBP',
'sort_value' => 84,
'ct_help' => ''
),
6 =>
array (
'col_pos' => 10,
'sortable' => 0,
'content' => '<ahref=\\"#4\\">Visitsite></a>',
'ct_help' => ''
),
),
5 =>
array (
0 =>
array (
'col_pos' => 1,
'sortable' => 0,
'content' => 'Logo',
'ct_help' => ''
),
1 =>
array (
'col_pos' => 2,
'sortable' => 0,
'content' => 'Productcover5',
'sort_value' => 5,
'ct_help' => ''
),
2 =>
array (
'col_pos' => 3,
'sortable' => 0,
'content' => 'Vehicle&Personal5',
'sort_value' => 5,
'ct_help' => ''
),
3 =>
array (
'col_pos' => 4,
'sortable' => 0,
'content' => 'No',
'sort_value' => 0,
'ct_help' => ''
),
4 =>
array (
'col_pos' => 5,
'sortable' => 0,
'content' => '<b>Yes</b>',
'sort_value' => 1,
'ct_help' => ''
),
5 =>
array (
'col_pos' => 9,
'sortable' => 0,
'content' => 'from96GBP',
'sort_value' => 96,
'ct_help' => ''
),
6 =>
array (
'col_pos' => 10,
'sortable' => 0,
'content' => '<ahref=\\"#5\\">Visitsite></a>',
'ct_help' => ''
)
)
)
)
;
function sort_list($list, $field, $ascending = true) {
$headers = array_values($list['header'])[0];
if (($key = array_search($field, array_column($headers, 'content'))) === false || $headers[$key]['sortable'] == 0) {
// can't find field or field is not sortable, do nothing
return $list;
}
usort($list['row'], function ($a, $b) use ($key, $ascending) {
return $ascending ? $a[$key]['sort_value'] <=> $b[$key]['sort_value'] : $b[$key]['sort_value'] <=> $a[$key]['sort_value'];
});
return $list;
}
print_r(sort_list($data, 'Price'));