Ich arbeite an der Verwendung , um zu überprüfen, ob ein Course
Objekt namens Course
in einem Array ist.Ändern der Art und Weise PHP in_array Objektvergleich
Ein Problem, das ich habe, ist, ich möchte eine bestimmte Eigenschaft innerhalb meiner Course
Objekt, um den Objektvergleich zu tun, anstelle von Vergleich des gesamten Objekts.
Insbesondere möchte ich die $course->getShortName()
verwenden, um den Vergleich zu tun. Warum? Weil alle anderen privaten Variablen in meinem Course
-Objekt unterschiedlich sein können, mit Ausnahme der Eigenschaft short_name
, die gleich bleiben kann, und deshalb möchte ich sie für die Objekteigenschaft verwenden.
Methode, die den Vergleich tut:
public function overlap($courses, $course_temp) {
for ($i = 0; $i < count($courses); $i = $i + 1) {
if ($this->overlapCourses($courses[$i], $course_temp)) {
// Push the class that is conflicted to the conflictedClass
// array
// TODO: Figure out why it's being added to the list
if(!in_array($courses[$i], $this->conflictClasses)) {
array_push($this->conflictClasses, $courses[$i]);
}
// Push the class that is conflicted with to the
// conflictedClass array
// TODO: Figure out why it's being added to the list
if(!in_array($course_temp, $this->conflictClasses)) {
array_push($this->conflictClasses, $course_temp);
}
return false;
}
}
return false;
}
Getter aus meiner Course
Klasse
public function getShortName(){
return $this->short_name;
}
tl;dr
: Statt Objekt zu vergleichen, vergleichen Eigenschaft des Objekts
Sie können das Verhalten von in_array nicht ändern, aber vielleicht ist das hilfreich: http://php.net/manual/de/function.array-uintersect.php – colburton