Ich habe ein Array mit Elementen, jedes Element hat eine duration
und eine price
.Filterarray basierend auf anderen Einträgen in demselben Array
Ich möchte die Duplikate duration
Werte basierend auf dem price
Wert herausfiltern - halten die niedrigste.
Array:
$arr = [
[
'duration' => 60, // this item should be filtered
'price' => 100
],
[
'duration' => 120,
'price' => 190
],
[
'duration' => 60, // this one should remain in array
'price' => 75
]
]
Ich verwende Laravel als Rahmen, so dass ich bin in der Lage, die Sammlung-Methoden zu verwenden.
So, jetzt erreiche ich dies wie folgt:
$arr->sortByDesc('price')
->keyBy('duration') // duplicate entries are overwritten
// with the latest/lowest value
->sortBy('price');
Aber das fühlt sich ein wenig lückenhaft ...
Ich benutze Laravel nicht, sondern auf das, was ich in der Bedienungsanleitung zu lesen, scheint Simones zweite Methode die beste 'collection' Ansatz. Es sortiert ASC und unique() behält die ersten Vorkommen. – mickmackusa