我有以下陣列:排序陣列在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.
我知道數組是不一致的。有更好的功能使用嗎?
請檢查:codepad
所需的輸出:
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
)
)
感謝
嗯,所需的輸出會使事情從代碼中找到更明確的答案。你能提供嗎? – Wrikken
添加了期望的輸出! – glarkou
好的,剩下的1個問題:子陣列總是空或長度一致,或者我們可以期望在這裏有2個子項目的子陣列,如果是的話,我們如何處理?假設它們仍然與其他子陣列中的前兩項匹配? – Wrikken