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
Barbara StreisandOriginal
2024-12-26 13:58:13623Durchsuche

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>
<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;

}

Beispielverwendung


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

Stellungnahme:
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
Vorheriger Artikel:Tageseinrichtung LaravelNächster Artikel:Tageseinrichtung Laravel