2012-04-06 11 views
0

Ich bin in endlose Foreach gefallen.PHP creating/merging Array durch eindeutige Werte

bekam ich ein Array:

$array[0] = array(A,B); 
$array[1] = array(A,C); 
$array[2] = array(B,C); 
$array[3] = array(B,E); 
$array[4] = array(C,E); 

Was muss ich dies erhalten:

$array[0] = array(A,B,C); 
$array[1] = array(A,B,E); 
$array[2] = array(A,C,E); 
$array[3] = array(B,C,E); 

Gibt es eine einfache Möglichkeit, dies durch eine einfache Funktion zu erreichen? Auch brauche ich 4 Wert Arrays erstellen dieser obigen Ergebnisse: A, B, C, E usw.

+0

Sie haben "D" übersprungen. – landons

+0

Können Sie etwas genauer erklären, was Sie meinen? 1. Das Alphabet, das wir kennen, sieht eher wie "ABCD" aus und dann sehen Sie für Ihren ersten Teil AB, AC, BC, BE, CE ein bisschen komisch aus, wie Sie AE vergessen haben ... – Kerwindena

+0

Es ist nicht wichtig Was sind die Buchstaben? Er will nur das kartesische Produkt der einzigartigen Array-Elemente. – webbiedave

Antwort

1

Etwas Ähnliches (nicht getestet):

$out = array(); 
foreach($array as $first) { 
    foreach($array as $second) { 
     if (array_slice($first, 1) == array_slice($second, -1)) { 
      $copy = $first; 
      $last = array_slice($second, -1, 1); 
      $copy []= $last[0]; 
      $out []= $copy; 
     } 
    } 
} 
+0

Vielen Dank dafür, aber als Kerwindena Code, dies würde nur für die Erstellung von 3 Artikel lange Arrays. Ich habe bereits unordentlichen Code für 2 Artikel lange Arrays. Deshalb versuche ich, dafür eine Funktion zu machen. – Trouble

+0

Nein, dies ist ein allgemeiner Code für die Generation 2> 3, 3> 4 usw. Für jeden Schritt. – kirilloid

+0

Oh .. Entschuldigung, als ich es nicht verstanden habe. Ich werde es jetzt versuchen. – Trouble

0

Was:

$array[0] = array(A,B); 
$array[1] = array(A,C); 
$array[2] = array(B,C); 
$array[3] = array(B,E); 
$array[4] = array(C,E); 

$array2 = new array(); 

for($i = 0; $i < count($array); $i++) 
{ 
    for($j = 0; $j < count($array); $j++) 
    { 
     if($array[$i][1] == $array[$j][0]) 
     { 
      $array2[] = new array($array[$i][0], $array[$i][1], $array[$j][1]); 
     } 
    } 
} 
+0

danke, das würde funktionieren, aber nur für die Erstellung von 3 Artikel lange Arrays, aber als ich 2 erste Elemente übereinstimmen müssen, um 4 Einsen zu erstellen. Das würde 2 weitere if-Anweisungen erfordern - zu kompliziert, wenn 5 Items möglich wären. – Trouble

Verwandte Themen