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
Libérer: 2024-12-26 13:58:13
original
618 Les gens l'ont consulté

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>
<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;
Copier après la connexion

}

Exemple Utilisation


$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'),
Copier après la connexion

);

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
    )
Copier après la connexion

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

source:php.cn
Article précédent:Configuration du jour Laravel Article suivant:L'utilisation de `isset()` et `!empty()` dans la validation d'entrée PHP est-elle redondante ?
Déclaration de ce site Web
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
Derniers articles par auteur
Derniers numéros
Rubriques connexes
Plus>
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal