Сортировка массива с использованием array_multisort

У меня есть следующий массив:

$array = array(
        'note' => array(),
        'year' => array('2011','2010', '2012'),
        'type' => array('conference', 'journal', 'conference'),
    );

И я использую следующую функцию для сортировки массива, используя тип поля и другой массив:

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;
}

Когда я вызываю следующую функцию, я получаю следующую ошибку:

$array = array_multisort_by_order($array, 'type', array('conference', 'journal'));

print_r($array['type']);

Ошибка:

Warning: array_multisort(): Array sizes are inconsistent.

Я знаю, что массивы несовместимы. Есть ли лучшая функция для использования?

Пожалуйста, проверьте: кодовая панель

Желаемый результат:

Array
(
[note] => Array
    (
        [0] => 
        [1] => 
        [2] => 
    )

[year] => Array
    (
        [0] => 2011
        [1] => 2012
        [2] => 2010
    )

[type] => Array
    (
        [0] => conference
        [1] => conference
        [2] => journal
    )

)

Пример 2:

Массив

 $array = array(
        'note' => array([0]=>'test1', [1]=>'test2'),
        'year' => array([0]=>'2011', [2]=>'2012'),
        'type' => array([0]=>'conference',[1]=>'journal', [2]=>'conference'),
    );

Желаемый результат 2

Array
(
[note] => Array
    (
        [0] => test1
        [1] => 
        [2] => tes2
    )

[year] => Array
    (
        [0] => 2011
        [1] => 2012
        [2] => 
    )

[type] => Array
    (
        [0] => conference
        [1] => conference
        [2] => journal
    )

)

Спасибо

7
задан Wrikken 19 June 2012 в 20:46
поделиться