Angenommen, ich habe eine FunktionFunktion zu glätten mehrere Arrays
evenOut($array, $limit){
//returns exactly $limit items
}
und diese Daten
$animals = array();
$animals['barn'] = array_fill(0,20, 'b');
$animals['forest'] = array_fill(0,20, 'f');
$animals['house'] = array_fill(0,20, 'h');
$animals['mountain'] = array_fill(0,20, 'm');
Ich möchte maximal 10 Tiere zurück, jedoch sollten sie unter die gleichmäßig verteilt werden Orte, aus denen sie kommen. so, wenn ich tat
evenOut($animals,8);
i 2 jedes evenOut($animals,2);
('b','b','f','f','h','h','m','m',)
bekäme sollte ('b','f')
zurück, wenn ich diese Daten haben
$animals = array();
$animals['barn'] = array_fill(0,1, 'b');
$animals['forest'] = array_fill(0,3, 'f');
$animals['house'] = array_fill(0,8, 'h');
$animals['mountain'] = array_fill(0,1, 'm');
evenOut($animals,8);
erwartete Ergebnis ('b','f','f','f','h','h','h','m',)
evenOut($animals,10);
erwartete Ergebnis wäre würde be ('b','f','f','f','h','h','h','h','h','m',)
$animals = array();
$animals['barn'] = array_fill(0,0, 'b');
$animals['forest'] = array_fill(0,3, 'f');
evenOut($animals,10);
erwartete Ergebnis würde ('f','f','f')
sein
Ich bin nicht sicher, wie ich diesen Ansatz sollte, ich hoffe, ist es eine einfache Möglichkeit
Die erste Antwort hat drei Probleme, undefined $ extra und die Tiere Mischen und unbegrenzte Ausführung, wenn die Tiere weniger sind als der Grenzwert. der zweite funktioniert auch nicht wie erwartet, aber danke für die Mühe! – Moak