У меня есть следующий код, который создает массив.Сравнение нескольких массивов для тех же значений
Мне нужно разбить этот массив и сравнить полученные массивы друг с другом.
Мне нужно сравнить только массивы, которые находятся рядом друг с другом.
Итак, первое и второе, второе и третье, и так далее. Я могу построить еще один массив, чтобы сохранить порядок, который нужно сравнить, если это поможет. Я просто не знаю, как их проверить.
Цель состоит в том, чтобы гарантировать, что массивы по обе стороны друг друга не содержат один и тот же $ 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 вы хотите сравнить идентификатор racer с идентификатором одного класса. например, первый класс id 17 имеет 4 подзаголовка, поэтому вы хотите сравнить эти четыре друг с другом и так далее для идентификаторов следующего класса ... ?? –
Juan гоночный трек - это средство для гоночных мотоциклов. – indymx