【发布时间】:2011-10-18 08:55:07
【问题描述】:
它应该很简单的算法,但我无法绕过它。
我有一些按字母顺序排列的数组
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
例如
[0] => Array
(
[0] => a
[1] => b
[2] => c
[3] => d
)
我需要将它们分类成行。例如:
我应该收到一个包含 3 列和尽可能多的行的表格,并且应该按字母顺序排列。
这是一个例子: 第一个数组应该转换成
[0] => Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
)
但第二个应该是
[1] => Array
(
[0] => Array
(
[0] => a
[1] => c
[2] => d
)
[1] => Array
(
[0] => b
)
)
我写在php,如果有人能提供帮助,我将不胜感激。
统一更新: 代码示例:
function sortAsOrdered( array $categories )
{
foreach ( $categories as $groupId => $group )
{
$regroupMenuItems = array();
$limit = count( $group );
$rows = ceil( $limit / 3 );
for ( $i = 0; $i < $rows; ++$i )
{
$jumper = 0;
for ( $j = 0; $j < 3; $j++ )
{
if ( 0 == $jumper )
{
$jumper = $i;
}
if ( isset( $group[ $jumper ] ) )
{
$regroupMenuItems[ $i ][ $j ] = $group[ $jumper ];
}
$jumper = $jumper + $rows;
}
}
$categories[ $groupId ] = $regroupMenuItems;
}
return $categories;
}
伙计们,我解决了这个问题。在这里你可以看到我的算法http://pastebin.com/xe2yjhYW。 但不要难过,你的帮助不会白费。我可能会为那些帮助我解决这个困难算法的人提供赏金。
伙计们再感谢一次。您的想法启发了我以不同的方式思考。
【问题讨论】:
-
在你的第二个结果中,它们不再按字母顺序排序,打破排序顺序的标准是什么?
-
他似乎希望列按字母顺序排序
-
我认为他希望按列排序,然后按行排序
-
@Marcus 如果您将它们作为列放在彼此的顶部,它们就是。
-
@Col。弹片,Paul Dixon 正是。