Heim >Backend-Entwicklung >PHP-Tutorial >Wie berechnet man das kartesische Produkt assoziativer PHP-Arrays unter Beibehaltung der Schlüssel?
Bei einem assoziativen Array ist es möglich, sein kartesisches Produkt unter Beibehaltung seiner Schlüssel zu bestimmen und sie im Inneren zu nutzen Arrays.
Wir können dieses Problem durch Induktion angehen:
Für ein einzelnes Array ist das kartesische Produkt a Reihe von Arrays mit einem einzelnen Schlüssel-Wert-Paar, das jedes Element im ursprünglichen Array darstellt.
Angenommen das Produkt der ersten N- 1 Arrays ist bekannt, wobei das N-te Array hinzugefügt wird beinhaltet:
Fügen Sie für jedes vorhandene Produkt ein Element mit dem Schlüssel des N-ten Arrays und dem ersten Wert des N-ten hinzu array.
Durch Wiederholen dieser Schritte wird sichergestellt, dass das Produkt von N Arrays erreicht wird.
Funktion kartesisch($input) {</p> <pre class="brush:php;toolbar:false">$result = array(); foreach ($input as $key => $values) { if (empty($values)) { continue; } if (empty($result)) { foreach($values as $value) { $result[] = array($key => $value); } } else { $append = array(); foreach($result as &$product) { $product[$key] = array_shift($values); $copy = $product; foreach($values as $item) { $copy[$key] = $item; $append[] = $copy; } array_unshift($values, $product[$key]); } $result = array_merge($result, $append); } } return $result;
}
$input = array(</p> <pre class="brush:php;toolbar:false">'arm' => array('A', 'B', 'C'), 'gender' => array('Female', 'Male'), 'location' => array('Vancouver', 'Calgary'),
);
print_r(cartesian($input));
Array<br>(</p> <pre class="brush:php;toolbar:false">[0] => Array ( [arm] => A [gender] => Female [location] => Vancouver ) [1] => Array ( [arm] => A [gender] => Female [location] => Calgary ) [2] => Array ( [arm] => A [gender] => Male [location] => Vancouver )
...etc.
Das obige ist der detaillierte Inhalt vonWie berechnet man das kartesische Produkt assoziativer PHP-Arrays unter Beibehaltung der Schlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!