【发布时间】:2010-02-11 05:15:51
【问题描述】:
如果不求助于自定义函数的荒谬组合,我无法为这个问题提出任何明智的解决方案。或许你可以提供一些新的想法。
我有以下(简化的)数组
Array
(
[0] => Array
(
[vid_id] => 420037
[vid_rating] => 2.93827
[vid_quality] => 2
[vid_special] => 1
[vid_weight] => 0
[vid_position] => 0
[vid_position_end] => 0
)
[1] => Array
(
[vid_id] => 420040
[vid_rating] => 3
[vid_quality] => 1
[vid_special] => 1
[vid_weight] => 0
[vid_position] => 0
[vid_position_end] => 0
)
[2] => Array
(
[vid_id] => 426455
[vid_rating] => 3.25581
[vid_quality] => 2
[vid_special] => 0
[vid_weight] => 5
[vid_position] => 1
[vid_position_end] => 2
)
[3] => Array
(
[vid_id] => 429804
[vid_rating] => 3
[vid_quality] => 2
[vid_special] => 0
[vid_weight] => 0
[vid_position] => 0
[vid_position_end] => 0
)
[4] => Array
(
[vid_id] => 420848
[vid_rating] => 2.94444
[vid_quality] => 2
[vid_special] => 0
[vid_weight] => 3
[vid_position] => 1
[vid_position_end] => 2
)
[5] => Array
(
[vid_id] => 420859
[vid_rating] => 2.73077
[vid_quality] => 2
[vid_special] => 0
[vid_weight] => 4
[vid_position] => 1
[vid_position_end] => 2
)
[6] => Array
(
[vid_id] => 420524
[vid_rating] => 2.41379
[vid_quality] => 2
[vid_special] => 0
[vid_weight] => 5
[vid_position] => 2
[vid_position_end] => 2
)
[7] => Array
(
[vid_id] => 419810
[vid_rating] => 3.13393
[vid_quality] => 1
[vid_special] => 0
[vid_weight] => 0
[vid_position] => 0
[vid_position_end] => 0
)
[8] => Array
(
[vid_id] => 419851
[vid_rating] => 2.97802
[vid_quality] => 1
[vid_special] => 0
[vid_weight] => 5
[vid_position] => 1
[vid_position_end] => 2
)
[9] => Array
(
[vid_id] => 419843
[vid_rating] => 2.95349
[vid_quality] => 1
[vid_special] => 0
[vid_weight] => 3
[vid_position] => 1
[vid_position_end] => 2
)
[10] => Array
(
[vid_id] => 419838
[vid_rating] => 2.73529
[vid_quality] => 1
[vid_special] => 0
[vid_weight] => 4
[vid_position] => 1
[vid_position_end] => 2
)
)
这个数组是这个mysql查询的结果
SELECT
vid_id,
vid_rating,
vid_quality,
vid_special,
vid_weight,
vid_position,
vid_position_end
FROM versions
WHERE vid_movid = 'xxxxx' AND vid_status = 1
ORDER BY vid_special DESC, vid_quality DESC, vid_rating DESC
这会输出一个网站链接列表(为简单起见,删除了实际链接列),需要按非常特定的顺序放置。使用几个 UNIONed 查询可以完成我需要做的事情......但我真的不想诉诸于此,因为成本会非常高,所以我认为操作数组会更容易。
我需要从这个数组中选择性地提取几个链接,并按照一定的顺序将它们粘贴到数组的顶部。
标有 vid_position 的链接,以及 vid_position_end 表示一个范围 该组将占据。意思是 如果标记了多个链接 有了这些职位,只有 2 个 推到顶部,如果范围是 1-2。如果是 1-3,那么前 3 职位将被占用。
权重表示其中的 ORDER 链接必须排序。所以如果有 5个不同的链接,有5个不同的 权重在 1-2 的位置范围内, 只会推送前 2 个权重 到顶部。剩下的 3 个将 留在原地。
有不同的链接组。 在这种情况下,有一个组 1-2, 和 3-3。第一组占据 前 2 个位置,在我的示例中 有3个重量等级。另一组 占据第三位,并且只有 有 1 个体重等级。
排序应该是独立的。 如果1-2中没有链接 组,但3-3中有链接, 这意味着 3-3 个分组链接将 出现在第一位。
【问题讨论】:
-
我无法理解您的订购规则。什么是组?什么是链接?
-
每条记录都是一个网站的链接(为了简单起见,我从数组中取出了列)。