Maison >développement back-end >tutoriel php >Comment calculer le produit cartésien des tableaux associatifs PHP tout en préservant les clés ?

Comment calculer le produit cartésien des tableaux associatifs PHP tout en préservant les clés ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-26 13:58:13675parcourir

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

Trouver un produit cartésien avec des tableaux associatifs PHP


Étant donné un tableau associatif, il est possible de déterminer son produit cartésien tout en préservant ses clés et les utiliser à l'intérieur tableaux.

Méthodologie


Nous pouvons aborder ce problème par induction :



  1. Pour un seul tableau, le produit cartésien est une série de tableaux avec une seule paire clé-valeur représentant chaque élément du tableau d'origine.



  2. En supposant que le produit des N-1 premiers tableaux est connu, en ajoutant le Nième tableau implique :



  3. Pour chaque produit existant, ajoutez un élément avec la clé du Nième tableau et la première valeur du Nième array.




La répétition de ces étapes garantit que le produit de N tableaux est atteint.


Mise en œuvre


fonction cartésienne ($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;

}

Exemple Utilisation


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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Configuration du jour LaravelArticle suivant:Configuration du jour Laravel