【发布时间】:2012-06-19 20:28:15
【问题描述】:
我有以下数组:
$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
)
)
谢谢
【问题讨论】:
-
嗯,想要的输出会让事情变得更清楚,然后从代码中查询它。你能提供吗?
-
好的,剩下 1 个问题:子数组是否总是空的或长度一致,或者我们可以期望这里有一个包含 2 个项目的子数组,如果是,我们该如何处理?假设它们仍然与其他子数组中的前 2 项匹配?
-
@Wrikken:可以在这里找到一个工作示例:codepad.org/mjSBYEyi。不幸的是,子数组总是不一致的。我将提供另一个例子。添加了另一个示例
-
好的,所以数字键很重要,明白了。
-
将输入数组填充到一致的长度后,请参阅此页面:stackoverflow.com/q/2474722/2943403
标签: php arrays multidimensional-array