【发布时间】:2016-09-11 18:52:36
【问题描述】:
我有以下生成数组的代码。
我需要拆分该数组并将生成的数组相互比较。
我只需要按顺序比较彼此相邻的数组。
所以第一个和第二个,第二个和第三个,依此类推。如果有帮助,我可以构建另一个数组来存储需要比较的顺序。我只是不知道如何像这样检查它们。
目标是确保彼此两侧的数组不包含相同的 $racer_id
它是用于赛道的计分应用程序,一个赛车手不能参加一个接一个的比赛。
谁能给我一个正确的方向?
** 只有一个 $event_id,有多个 $class_id 和 $racer_id。
<?php
function getEventClasses()
{
global $db;
global $event_id;
try {
$getEventClasses = $db->prepare('SELECT class_id
FROM tbl_event_classes
WHERE event_id = :event_id
ORDER BY sort');
$getEventClasses->bindValue(':event_id', $event_id);
$getEventClasses->execute();
} catch (PDOException $ex) {
echo 'An Error occurred!<br>';
//user friendly message
$ex->getMessage();
echo $ex;
exit;
}
$eventClasses = [];
while ($r = $getEventClasses->fetch(PDO::FETCH_ASSOC)) {
$eventClasses[] = [
'class_id' => $r['class_id']
];
}
return $eventClasses;
}
function getEntries($class_id)
{
global $db;
global $event_id;
try {
$getEntries = $db->prepare('SELECT tbl_event_entries.racer_id,
tbl_event_entries.class_id,
tbl_event_entries.event_id,
tbl_event_classes.class_type,
tbl_event_classes.points_class,
tbl_moto_order.moto_nbr
FROM tbl_moto_order
INNER JOIN (tbl_event_entries
LEFT JOIN tbl_event_classes
ON (tbl_event_entries.event_id = tbl_event_classes.event_id)
AND (tbl_event_entries.class_id = tbl_event_classes.class_id))
ON (tbl_moto_order.class_id = tbl_event_entries.class_id)
AND (tbl_moto_order.event_id = tbl_event_entries.event_id)
WHERE tbl_event_entries.event_id = :event_id
AND tbl_event_entries.racer_id != "9999"
AND tbl_event_entries.class_id = :class_id');
$getEntries->bindValue(':event_id', $event_id);
$getEntries->bindValue(':class_id', $class_id);
$getEntries->execute();
} catch (PDOException $ex) {
echo 'An Error occurred!<br>';
//user friendly message
$ex->getMessage();
echo $ex;
exit;
}
$eventEntries = [];
while ($r = $getEntries->fetch(PDO::FETCH_ASSOC)) {
$eventEntries[] = [
'racer_id' => $r['racer_id'],
'class_id' => $r['class_id'],
'event_id' => $r['event_id'],
'class_type' => $r['class_type'],
'points_class' => $r['points_class'],
'moto_nbr' => $r['moto_nbr']
];
}
return $eventEntries;
}
$eventClasses = getEventClasses();
foreach ($eventClasses as $eventClass) {
$eventEntries = getEntries($eventClass['class_id']);
foreach ($eventEntries as $eventEntry) {
$runningClasses[$eventClass['class_id']][] = [
'racer_id' => $eventEntry['racer_id'],
'event_id' => $eventEntry['event_id'],
'class_type' => $eventEntry['class_type'],
'points_class' => $eventEntry['points_class'],
'moto_nbr' => $eventEntry['moto_nbr']
];
}
}
foreach ($runningClasses as $class) {
$f->printr($class);
}
?>
数组:
Array
(
[17] => Array
(
[0] => Array
(
[racer_id] => 95
[event_id] => 326
[class_type] => A
[points_class] => 17
[moto_nbr] => 3
)
[1] => Array
(
[racer_id] => 350
[event_id] => 326
[class_type] => A
[points_class] => 17
[moto_nbr] => 3
)
[2] => Array
(
[racer_id] => 493
[event_id] => 326
[class_type] => A
[points_class] => 17
[moto_nbr] => 3
)
[3] => Array
(
[racer_id] => 295
[event_id] => 326
[class_type] => A
[points_class] => 17
[moto_nbr] => 3
)
[4] => Array
(
[racer_id] => 1142
[event_id] => 326
[class_type] => A
[points_class] => 17
[moto_nbr] => 3
)
[5] => Array
(
[racer_id] => 628
[event_id] => 326
[class_type] => A
[points_class] => 17
[moto_nbr] => 3
)
)
[14] => Array
(
[0] => Array
(
[racer_id] => 1142
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[1] => Array
(
[racer_id] => 162
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[2] => Array
(
[racer_id] => 151
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[3] => Array
(
[racer_id] => 1176
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[4] => Array
(
[racer_id] => 401
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[5] => Array
(
[racer_id] => 264
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[6] => Array
(
[racer_id] => 797
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[7] => Array
(
[racer_id] => 124
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[8] => Array
(
[racer_id] => 29
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[9] => Array
(
[racer_id] => 74
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[10] => Array
(
[racer_id] => 117
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[11] => Array
(
[racer_id] => 408
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[12] => Array
(
[racer_id] => 501
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
[13] => Array
(
[racer_id] => 1125
[event_id] => 326
[class_type] => A
[points_class] => 14
[moto_nbr] => 4
)
)
[8] => Array
(
[0] => Array
(
[racer_id] => 1180
[event_id] => 326
[class_type] => A
[points_class] => 8
[moto_nbr] => 6
)
)
[16] => Array
(
[0] => Array
(
[racer_id] => 73
[event_id] => 326
[class_type] => A
[points_class] => 16
[moto_nbr] => 12
)
[1] => Array
(
[racer_id] => 9
[event_id] => 326
[class_type] => A
[points_class] => 16
[moto_nbr] => 12
)
[2] => Array
(
[racer_id] => 525
[event_id] => 326
[class_type] => A
[points_class] => 16
[moto_nbr] => 12
)
)
[13] => Array
(
[0] => Array
(
[racer_id] => 1089
[event_id] => 326
[class_type] => A
[points_class] => 13
[moto_nbr] => 15
)
[1] => Array
(
[racer_id] => 73
[event_id] => 326
[class_type] => A
[points_class] => 13
[moto_nbr] => 15
)
[2] => Array
(
[racer_id] => 162
[event_id] => 326
[class_type] => A
[points_class] => 13
[moto_nbr] => 15
)
[3] => Array
(
[racer_id] => 264
[event_id] => 326
[class_type] => A
[points_class] => 13
[moto_nbr] => 15
)
[4] => Array
(
[racer_id] => 797
[event_id] => 326
[class_type] => A
[points_class] => 13
[moto_nbr] => 15
)
[5] => Array
(
[racer_id] => 422
[event_id] => 326
[class_type] => A
[points_class] => 13
[moto_nbr] => 15
)
[6] => Array
(
[racer_id] => 1176
[event_id] => 326
[class_type] => A
[points_class] => 13
[moto_nbr] => 15
)
[7] => Array
(
[racer_id] => 76
[event_id] => 326
[class_type] => A
[points_class] => 13
[moto_nbr] => 15
)
[8] => Array
(
[racer_id] => 1136
[event_id] => 326
[class_type] => A
[points_class] => 13
[moto_nbr] => 15
)
)
[5] => Array
(
[0] => Array
(
[racer_id] => 600
[event_id] => 326
[class_type] => Y
[points_class] => 5
[moto_nbr] => 16
)
[1] => Array
(
[racer_id] => 1143
[event_id] => 326
[class_type] => Y
[points_class] => 5
[moto_nbr] => 16
)
)
[10] => Array
(
[0] => Array
(
[racer_id] => 421
[event_id] => 326
[class_type] => A
[points_class] => 10
[moto_nbr] => 19
)
[1] => Array
(
[racer_id] => 1219
[event_id] => 326
[class_type] => A
[points_class] => 10
[moto_nbr] => 19
)
)
)
【问题讨论】:
-
你能详细说明下一个race_track是什么?
-
你好,@indymx 你想在一个班级 ID 中比较赛车手 ID。例如第一个类 id 17 有 4 个子条目,所以你想将这四个相互比较,以此类推,以获得下一个类 id 的......??
-
胡安赛道是摩托车比赛的设施。
-
曼吉特。我只关心比较当前“类”的“class_id”数组和紧随其后的数组。我将添加一个“排序”字段,如果测试中有重复的“racer_id”,则需要更改该字段。
标签: php mysql arrays loops matching