Как сортировать массив по шаблону?
В цикле формируется массив, примерно так:
$result = array();
foreach($orders as $order){
$row = array();
//тут разные условия, в которых колонка может отсутствовать
if(true){
$row['some1'] = 11;
}
$row = array();
$row['id'] = $order->get_id();
$row['some'] = $order->some();
if(true){
$row['some2'] = 22;
}
$result[] = $row;
}
Подскажите, можно ли сортировать массив по шаблону?
К примеру создать массив с нужным порядком:
$temp = array(
'some2',
'id',
'some1',
'some'
);
и по этому шаблону нужно отсортировать $result, чтобы было так:
$result = [
'some2'=>'some2value',
'id' => 123,
'some1' => 'some1value',
'some' => 'somevalue'
];
Как это можно сделать?
Ответы (1 шт):
Автор решения: wnull
→ Ссылка
$array = [
'some' => 'somevalue',
'some2'=>'some2value',
'some1' => 'some1value',
'id' => 123
];
$pattern = [
'some2',
'id',
'some1',
'some'
];
function sortByTemplate($array, $pattern) {
$result = [];
foreach (array_flip($pattern) as $k => $v) {
if (isset($array[$k])) {
$result[$k] = $array[$k];
}
}
return $result;
}
print_r(sortByTemplate($array, $pattern));