Array Mixin

peas 610184 1920
Bildquelle: Pixabay, cocoparisienne

Zwei Arrays ( $a1 und $a2 ) mit einer unterschiedlichen Anzahl von Elementen sollen zu einem Array werden. Allerdings soll nur jedes xte($mixrel) Element aus dem zweiten Array sein, die anderen aus dem ersten, und optional ($first = true) soll das zusammengeführte Array mit einem Element aus dem zweiten beginnen können. Sind die Elemente eines der beteiligten Arrays aufgebraucht, kommen ab diesem Punkt nur noch Elemente des anderen.

function array_mixin($a1,$a2,$mixrel,$first=false) {
	if ($mixrel==0) return $a1; elseif ($mixrel==1) return array_merge($a2,$a1);
		if (!is_array($a1) || !is_array($a2) || count($a2)==0) return $a1;
    if (count($a1)==0) return $a2;
    
	$mixrel=floor($mixrel+.5)-1;

    $result=array();
    if ( $first ) array_push($result,array_shift($a2));
    for($i=1;count($a1);$i++)
	  { array_push($result,array_shift($a1));
	    if (count($a2)==0) break;
	    if($i%$mixrel==0) array_push($result,array_shift($a2));
	  }
    
	return array_merge($result,$a2,$a1);
}

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable