I have the following array:
$array = [
'note' => [],
'year' => ['2011','2010', '2012'],
'type' => ['conference', 'journal', 'conference'],
];
And I use the following function to sort the array using the field type and another array:
function array_multisort_by_order(array $array, $by, array $order)
{
$order = array_flip($order);
$params[] = $array[$by];
foreach($params[0] as &$v) $v = $order[$v];
foreach($array as &$v) $params[] = &$v; unset($v);
call_user_func_array('array_multisort', $params);
return $array;
}
When I call the following function I get the following error:
$array = array_multisort_by_order($array, 'type', array('conference', 'journal'));
print_r($array['type']);
Error:
Warning: array_multisort(): Array sizes are inconsistent.
I know that arrays are inconsistent. Is there a better function to use?
Please check: codepad
Desired Output:
Array
(
[note] => Array
(
[0] =>
[1] =>
[2] =>
)
[year] => Array
(
[0] => 2011
[1] => 2012
[2] => 2010
)
[type] => Array
(
[0] => conference
[1] => conference
[2] => journal
)
)
Example 2:
Array
$array = [
'note' => ['test1', 'test2'],
'year' => ['2011', '2012'],
'type' => ['conference', 'journal', 'conference'],
];
Desired Result 2
Array
(
[note] => Array
(
[0] => test1
[1] =>
[2] => tes2
)
[year] => Array
(
[0] => 2011
[1] => 2012
[2] =>
)
[type] => Array
(
[0] => conference
[1] => conference
[2] => journal
)
)