PHP数组问题

时间:2009-01-27 16:23:35

标签: php arrays

我正在用PHP编写一个脚本,根据调查中相同答案的数量将人们进行比较。我使用这样的数组:

[人ID ] => 答案数相同

存储最接近我所比较的10个人。

我需要弄清楚如何找到相同的10个答案数中最低的并覆盖更高的答案数并修改人ID 键。

任何帮助?

3 个答案:

答案 0 :(得分:2)

听起来你可以很容易地在SQL中解决这个问题,但需要在PHP中做大量的工作。

答案 1 :(得分:1)

根据相同答案的数量排列数组会不会更容易?也许只是添加新人,使用数组并删除第一个/最后一个..

答案 2 :(得分:1)

您需要根据到person.number_of_answers的增量对条目进行排序。例如:

function cmp_by_delta($a, $b) {
  if ($a->delta == $b->delta) {
    return 0;
  }
  return ($a->delta < $b->delta) ? -1 : 1;
}
// calculate delta for each entry
foreach ($entries as $person) {
  $person->delta = abs($target_person->number_of_answers - $person->number_of_answers);
}
// sort entries by delta
usort($entries, 'cmp_by_delta');
// take 10 first matches from sorted array
$10_best_matches = array_slice($entries, 0, 10);

当然,这可以在数据库中更漂亮,更有效率地完成:

select * from people
order by abs(number_of_answers - :target_number_of_answers)
limit 10;