Ich habe ein Array, die mehrere Objekte enthält, können einige dieser Objekte haben Werte für lap_time
, in diesem Beispiel Element Matching 1
und 2
haben zusammenpassende Werte:Finden Arrayelemente mit passenden Werten
Array
(
[0] => stdClass Object
(
[id] => 1
[recorded_time] => 00:51:55.000000
[corrected_time] => 00:45:32.456140
[lap_time] => 00:09:06.491228
[laps] => 5
[code] =>
[sail_no] => 4931
[class] => SOLO
[helm_fname] => [Removed]
[helm_lname] => [Removed]
[crew_1_fname] =>
[crew_1_lname] =>
[crew_2_fname] =>
[crew_2_lname] =>
[modified_time] =>
[created_time] => 2017-02-19 17:53:48
[created_fname] => Admin
[created_lname] => istrator
[modified_fname] =>
[modified_lname] =>
[points] => 1
)
[1] => stdClass Object
(
[id] => 21
[recorded_time] => 00:50:07.000000
[corrected_time] => 00:45:56.186984
[lap_time] => 00:09:11.237397
[laps] => 5
[code] =>
[sail_no] => 67173
[class] => LASER
[helm_fname] => [Removed]
[helm_lname] => [Removed]
[crew_1_fname] =>
[crew_1_lname] =>
[crew_2_fname] =>
[crew_2_lname] =>
[modified_time] => 2017-02-22 10:51:58
[created_time] => 2017-02-19 18:40:58
[created_fname] => Admin
[created_lname] => istrator
[modified_fname] =>
[modified_lname] =>
[points] => 2
)
[2] => stdClass Object
(
[id] => 2
[recorded_time] => 00:50:07.000000
[corrected_time] => 00:45:56.186984
[lap_time] => 00:09:11.237397
[laps] => 5
[code] =>
[sail_no] => 52441
[class] => LASER
[helm_fname] => [Removed]
[helm_lname] => [Removed]
[crew_1_fname] =>
[crew_1_lname] =>
[crew_2_fname] =>
[crew_2_lname] =>
[modified_time] => 2017-02-22 10:51:58
[created_time] => 2017-02-19 18:40:58
[created_fname] => Admin
[created_lname] => istrator
[modified_fname] =>
[modified_lname] =>
[points] => 3
)
Wenn irgendein Objekte haben übereinstimmende Werte für lap_time
, die übereinstimmenden Objekte müssen ihre Punkte gemittelt haben.
Dies ist, was ich angefangen habe zu tun, aber ich erkannte, dass dies wahrscheinlich nicht der beste Weg ist, dies zu tun. Die Methode break_race_ties
ist nicht abgeschlossen.
<?php
class Results_calculations_model
{
public
function race_points($results)
{
$points = 0;
$results_with_points = array();
foreach ($results AS $result) {
//increment points by one for each position
$points++;
$result->points = $points;
//add result back to array;
$results_with_points[] = $result;
}
$results_with_points = $this->break_race_ties($results_with_points);
return $results_with_points;
}
protected
function break_race_ties($results)
{
$previous_time = 0;
$ties = array();
foreach ($results AS $result) {
if ($previous_time === $result->lap_time) {
$ties['points'][] = $result->points;
$ties['id'][] = $result->id;
$average_points = $this->average_array_values($ties['points']);
}
$previous_time = $result->lap_time;
}
}
protected
function average_array_values($values)
{
$number_of_elements = count($values);
$total_points = array_sum($values);
return $total_points/$number_of_elements;
}
}
kann vorschlagen, dass Sie alle Funktionen, die mir dabei helfen könnte, oder ein Codebeispiel dessen, was dies zu tun
Würde dies funktionieren, wenn 3 oder mehr Verbindungen für eine einzelne 'lap_time' vorhanden wären? –