Heim > Backend-Entwicklung > PHP-Tutorial > Wie berechnet man das kartesische Produkt assoziativer PHP-Arrays unter Beibehaltung der Schlüssel?

Wie berechnet man das kartesische Produkt assoziativer PHP-Arrays unter Beibehaltung der Schlüssel?

Barbara Streisand
Freigeben: 2024-12-26 13:58:13
Original
618 Leute haben es durchsucht

How to Calculate the Cartesian Product of PHP Associative Arrays while Preserving Keys?

Kartesisches Produkt mit assoziativen PHP-Arrays finden


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.

Methodik


Wir können dieses Problem durch Induktion angehen:



  1. 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.



  2. Angenommen das Produkt der ersten N- 1 Arrays ist bekannt, wobei das N-te Array hinzugefügt wird beinhaltet:



  3. 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.


Implementierung


Funktion kartesisch($input) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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 &amp;$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;
Nach dem Login kopieren

}

Beispielverwendung


$input = array(</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">'arm' => array('A', 'B', 'C'),
'gender' => array('Female', 'Male'),
'location' => array('Vancouver', 'Calgary'),
Nach dem Login kopieren

);

print_r(cartesian($input));


Array<br>(</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><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
    )
Nach dem Login kopieren

...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!

Quelle:php.cn
Vorheriger Artikel:Tageseinrichtung Laravel Nächster Artikel:Ist die Verwendung von „isset()“ und „!empty()“ in der PHP-Eingabevalidierung überflüssig?
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Aktuelle Ausgaben
verwandte Themen
Mehr>
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage