La fonction array_fill_keys est utilisée pour créer un nouveau tableau dont les clés proviennent d'un tableau donné, et les valeurs correspondantes de chaque clé sont la même valeur spécifiée. Le prototype de cette fonction est le suivant:
<span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">array_fill_keys</span></span><span> ( </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$keys</span></span><span> , </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span> )
</span></span>
$ touches : il s'agit d'un tableau contenant des noms de clés.
$ Value : La valeur correspondant à chaque touche, et toutes les clés correspondront à cette valeur.
Exemple :
<span><span><span class="hljs-variable">$keys</span></span><span> = [</span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-string">'banana'</span></span><span>, </span><span><span class="hljs-string">'cherry'</span></span><span>];
</span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill_keys</span></span><span>(</span><span><span class="hljs-variable">$keys</span></span><span>, </span><span><span class="hljs-variable">$value</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>
Sortir :
<span><span>Array
(
[</span><span><span class="hljs-meta">apple</span></span><span>] => </span><span><span class="hljs-number">0</span></span><span>
[</span><span><span class="hljs-meta">banana</span></span><span>] => </span><span><span class="hljs-number">0</span></span><span>
[</span><span><span class="hljs-meta">cherry</span></span><span>] => </span><span><span class="hljs-number">0</span></span><span>
)
</span></span>
Cet exemple crée un nouveau tableau avec le nom de clé du tableau à partir du tableau $ touches et la valeur de chaque clé est 0 .
La fonction Array_Walk est utilisée pour traverser le tableau et appliquer une fonction de rappel à chaque élément. Son prototype est le suivant:
<span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-title function_ invoke__">array_walk</span></span><span> ( </span><span><span class="hljs-keyword">array</span></span><span> &</span><span><span class="hljs-variable">$array</span></span><span> , </span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span> [, </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$userdata</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span> ] )
</span></span>
$ Array : Il s'agit du tableau transmis. Notez que le type de référence est passé, de sorte que le tableau d'origine sera modifié directement.
$ rappel : une fonction de rappel qui traite chaque élément d'un tableau.
$ UserData : Paramètres facultatifs, supplémentaires, sera passé en deuxième paramètre à la fonction de rappel.
Exemple :
<span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-string">'banana'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'cherry'</span></span><span> => </span><span><span class="hljs-number">4</span></span><span>];
</span><span><span class="hljs-title function_ invoke__">array_walk</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, function (&</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>) {
</span><span><span class="hljs-variable">$value</span></span><span> = </span><span><span class="hljs-variable">$value</span></span><span> * </span><span><span class="hljs-number">2</span></span><span>;
});
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span></span>
Sortir :
<span><span>Array
(
[</span><span><span class="hljs-meta">apple</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-meta">banana</span></span><span>] => </span><span><span class="hljs-number">6</span></span><span>
[</span><span><span class="hljs-meta">cherry</span></span><span>] => </span><span><span class="hljs-number">8</span></span><span>
)
</span></span>
Dans cet exemple, Array_Walk itérera sur chaque élément du tableau et multipliera la valeur de chaque élément par 2.
Dans le développement réel, il est souvent nécessaire d'initialiser un tableau avec des valeurs fixes avant le traitement par lots de ces valeurs. Nous pouvons atteindre cette exigence en combinant Array_Fill_keys et Array_Walk .
Cas réel : Supposons que nous ayons un tableau représentant les informations de commande de l'utilisateur, qui contient l'ID utilisateur et la quantité de l'article qu'il a acheté. Nous voulons initialiser un tableau contenant tous les ID utilisateur avec une valeur initiale de 0 (indiquant la quantité d'achat initiale), puis mettez à jour la quantité d'achat pour chaque utilisateur via Array_Walk .
Exemple de code :
<span><span><span class="hljs-comment">// utilisateurIDListe</span></span><span>
</span><span><span class="hljs-variable">$user_ids</span></span><span> = [</span><span><span class="hljs-number">101</span></span><span>, </span><span><span class="hljs-number">102</span></span><span>, </span><span><span class="hljs-number">103</span></span><span>, </span><span><span class="hljs-number">104</span></span><span>];
</span><span><span class="hljs-comment">// Initialiser le tableau,所有utilisateur的购买数量为0</span></span><span>
</span><span><span class="hljs-variable">$order_data</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_fill_keys</span></span><span>(</span><span><span class="hljs-variable">$user_ids</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-comment">// 假设这是utilisateur购买商品的记录,每个数组项表示utilisateurIDSa quantité d'achat</span></span><span>
</span><span><span class="hljs-variable">$purchases</span></span><span> = [
[</span><span><span class="hljs-number">101</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>],
[</span><span><span class="hljs-number">102</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>],
[</span><span><span class="hljs-number">103</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>],
[</span><span><span class="hljs-number">101</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>],
[</span><span><span class="hljs-number">104</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>]
];
</span><span><span class="hljs-comment">// utiliser array_walk Données de commande de traitement,更新utilisateur的购买数量</span></span><span>
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$purchases</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$purchase</span></span><span>) {
</span><span><span class="hljs-variable">$user_id</span></span><span> = </span><span><span class="hljs-variable">$purchase</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>];
</span><span><span class="hljs-variable">$quantity</span></span><span> = </span><span><span class="hljs-variable">$purchase</span></span><span>[</span><span><span class="hljs-number">1</span></span><span>];
</span><span><span class="hljs-comment">// 通过回调函数更新对应utilisateur的购买数量</span></span><span>
</span><span><span class="hljs-title function_ invoke__">array_walk</span></span><span>(</span><span><span class="hljs-variable">$order_data</span></span><span>, function (&</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>) </span><span><span class="hljs-keyword">use</span></span><span> ($</span><span><span class="hljs-title">user_id</span></span><span>, $</span><span><span class="hljs-title">quantity</span></span><span>) {
</span><span><span class="hljs-title">if</span></span><span> ($</span><span><span class="hljs-title">key</span></span><span> == $</span><span><span class="hljs-title">user_id</span></span><span>) {
$</span><span><span class="hljs-title">value</span></span><span> += $</span><span><span class="hljs-title">quantity</span></span><span>;
}
});
}
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$order_data</span></span><span>);
</span></span>
Sortir :
<span><span>Array
(
[</span><span><span class="hljs-meta">101</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
[</span><span><span class="hljs-meta">102</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
[</span><span><span class="hljs-meta">103</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-meta">104</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>
Dans cet article, nous introduisons en détail comment utiliser l'array_fill_keys et array_walk en php. Via array_fill_keys, nous pouvons rapidement créer un tableau avec des noms de touches fixes et spécifier la même valeur initiale pour chaque touche. Et via Array_Walk, nous pouvons itérer dans le processus de tableau et de lots de chaque élément dans le tableau.
En combinant ces deux fonctions, nous pouvons parcourir les opérations sur les données très efficacement, en particulier adaptées aux scénarios où les données doivent être initialisées et mises à jour ou traitées. En instanciant des scénarios commerciaux spécifiques, tels que le traitement des données de commande, il peut aider à mieux comprendre comment ces fonctions sont utilisées dans des projets réels.
Étiquettes associées:
array_walk