Fonctions et tableaux de rappel
Le contenu partagé avec vous dans cet article concerne les fonctions de rappel PHP et les tableaux, qui ont une certaine valeur de référence. Les amis dans le besoin peuvent se référer à
array_filter(), array_map(), comparaison d'utilisation. de array_reduce(), array_walk()
array_filter — Utiliser la fonction de rappel pour filtrer les cellules du tableau
Description : tableau array_filter ( tableau $array
[, appelable $callback
[, int $flag
= 0 ]] )
transmet tour à tour chaque valeur du tableau array
à la fonction callback
. Si la fonction callback
renvoie vrai, la valeur actuelle du tableau array
sera incluse dans le tableau de résultat renvoyé, sinon, aucune valeur ne sera renvoyée au tableau de résultat . Les noms de clés du tableau restent inchangés.
Description du paramètre :
tableau :Tableau à boucler
rappel :Fonction de rappel à utiliser
Si la fonction callback
n'est pas fournie, toutes les valeurs équivalentes de array seront supprimées les entrées >FALSE
.
drapeau:Décisioncallback
Formulaire des paramètres reçus
ARRAY_FILTER_USE_KEY
- Accepte le nom de la clé comme seul paramètrecallback
ARRAY_FILTER_USE_BOTH
-callback
Accepter à la fois le nom de la clé et la valeur de la clé
Valeur de retour : Renvoie le tableau filtré.
Exemple 1 :
function odd($var){ return($var & 1);}function even($var){ return(!($var & 1)); } $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5); $array2 = array(6, 7, 8, 9, 10, 11, 12);echo "Odd :\n";print_r(array_filter($array1, "odd")); echo "<br />Even:\n"; print_r(array_filter($array2, "even")); 结果:Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )
Analyse : & est l'opération AND de PHP Lorsque la valeur du tableau est transmise, l'opération AND est effectuée selon la forme binaire et...0000 0001 (le nombre de 0 devant est lié au système d'exploitation. Si vous ne comprenez pas, vous pouvez compléter les connaissances de base). Si le résultat est vrai, la valeur transmise est renvoyée dans le tableau de résultats.
Exemple 2 : S'il n'y a pas de fonction de rappel, si la valeur dans le tableau est vraie, la valeur dans le tableau sera renvoyée dans le tableau résultat
$entry = array( 0 => 'foo', 1 => false, 2 => -1, 3 => null, 4 => ''); print_r(array_filter($entry)); 结果:Array ( [0] => foo [2] => -1 )
Exemple 3 : S'il n'y a que des valeurs clés, alors la fonction de rappel peut recevoir une valeur clé. Si les deux paires clé-valeur sont incluses, le premier paramètre reçoit la valeur et le deuxième paramètre reçoit la valeur clé
$arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4]; var_dump(array_filter($arr, function($k) { return $k == 'b';}, ARRAY_FILTER_USE_KEY)); var_dump(array_filter($arr, function($v, $k) { return $k == 'b' || $v == 4;}, ARRAY_FILTER_USE_BOTH)); 结果: D:\studySoftware\wamp64\www\test.php: 5:array (size=1) 'b' => int 2D: \studySoftware\wamp64\www\test.php: 8:array (size=2) 'b' => int 2 'd' => int 4
array_map — 为数组的每个元素应用回调函数
说明:array array_map ( callable $callback
, array $array1
[, array $...
] )
array_map() : Renvoie un tableau, qui est appliqué à chaque élément de array1
callback
Tableau après fonction. Le nombre de paramètres de fonction callback
et le nombre de tableaux transmis à array_map() doivent être les mêmes.
Description du paramètre :
rappel : Fonction de rappel, appliquée à chaque élément de chaque tableau.
array1 : tableau, parcourez et exécutez la fonction callback
.
...:数组列表,每个都遍历运行 callback
函数。
返回值:返回数组,包含 callback
函数处理之后 array1
的所有元素。
例1:
function cube($n){ return($n * $n * $n); }$a = array(1, 2, 3, 4, 5); $b = array_map("cube", $a); print_r($b); 结果: Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
例2:如果几个数组的元素数量不一致:空元素(null)会扩展短那个数组,直到长度和最长的数组一样。
function cube($n,$x){ echo "n的值:{$n},x的值:{$x}<br />"; return ($n + $x);}$a = array(1,2,3,4,5); $b = array(10,20); $c = array_map("cube",$a,$b); print_r($c); /* 结果: n的值: 1,x的值:10n的值: 2,x的值:20n的值: 3,x的值:n的值: 4,x的值:n的值: 5,x的值:Array ( [0] => 11 [1] => 22 [2] => 3 [3] => 4 [4] => 5 ) */
例3:此函数有个有趣的用法:传入 NULL
作为回调函数的名称,将创建多维数组(一个数组,内部包含数组。)
$a = array(1, 2, 3); $b = array("one", "two", "three"); $c = array("uno", "dos", "tres"); $d = array_map(null, $a, $b, $c); echo "<pre class="brush:php;toolbar:false">"; print_r($d); echo "";
结果如下:
例4:如果仅传入一个数组,键(key)会保留;传入多个数组,键(key)是整型数字的序列。
$arr = array("stringkey" => "value"); function cb1($a) { return array ($a); }function cb2($a, $b) { return array ($a, $b); }var_dump(array_map("cb1", $arr)); var_dump(array_map("cb2", $arr, $arr)); var_dump(array_map(null, $arr)); var_dump(array_map(null, $arr, $arr));
结果如下:
array_reduce — Utilisez la fonction de rappel pour réduire de manière itérative le tableau à une valeur unique
Description : mixte array_reduce ( array $array
, appelable $callback
[, mixte $initial
= NULL
] )
array_reduce() applique la fonction de rappel callback
de manière itérative à chaque élément du tableau array
dans une cellule, réduisant ainsi le tableau à une seule valeur.
Paramètres :
tableau : Tableau d'entrée.
rappel : mixte rappel ( mixte $carry
, mixte $item
)
carry : porte la valeur de la dernière itération ; si cette itération est la première fois, alors cette valeur est initial
.
item : porte la valeur de cette itération.
initial : Si le paramètre facultatif initial
est spécifié, ce paramètre sera utilisé avant le début du traitement, ou lorsque le traitement se termine et que le tableau est vide, le dernier résultat (c'est-à-dire lorsque le paramètre tableau est vide, initial comme valeur de retour de array_reduce()).
官网例子:
function sum($carry, $item){ $carry += $item; return $carry; } function product($carry, $item){ $carry *= $item; return $carry; } $a = array(1, 2, 3, 4, 5); $x = array(); var_dump(array_reduce($a, "sum")); // int(15)var_dump(array_reduce($a, "product", 10)); // int(1200), because: 10*1*2*3*4*5var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"
这里讨论array为空的情况:
function sum($carry, $item){ echo "如果这里执行了,就打印..."; return $carry;}$x = array(); print_r(array_reduce($x, "sum",array("a","b"))); //结果: Array ( [0] => a [1] => b )
可以看出,当数组为空的时候,回调函数根本就没有执行,而是把initial作为array_reduce返回值
array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
说明:bool array_walk ( tableau &$array
, appelable $callback
[, mixte $userdata
= NULL
] )
Appliquez la fonction définie par l'utilisateur funcname
à chaque cellule du tableau array
.
array_walk() ne sera pas affecté par le array
pointeur de tableau interne. array_walk() parcourra l'ensemble du tableau quelle que soit la position du pointeur.
Description du paramètre :
tableau : Tableau d'entrée.
rappel : Généralement, callback
accepte deux paramètres. array
La valeur du paramètre est utilisée comme première et le nom de la clé est utilisé comme deuxième .
Remarque :
Si callback
doit opérer directement sur les valeurs du tableau, spécifiez le premier paramètre à callback
comme référence. Toute modification apportée à ces cellules modifiera également le tableau d'origine lui-même.
Remarque :
Le nombre de paramètres dépasse le nombre attendu. S'il est transmis à une fonction intégrée (telle que strtolower()), un avertissement sera émis, il ne peut donc pas être utilisé comme funcname
. 🎜>.
Seule la valeur de array
peut être modifiée, et l'utilisateur ne doit pas modifier la structure du tableau lui-même dans le rappel fonction. Par exemple, ajouter/supprimer des unités, supprimer des unités, etc. Si le tableau sur lequel array_walk() change, le comportement de cette fonction est indéfini et imprévisible.
userdata : Si le paramètre facultatif userdata
est fourni, il sera passé au rappel en tant que troisième paramètre funcname
.
返回值:成功时返回 TRUE
, 或者在失败时返回 FALSE
。
例子:
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana"); function test_alter(&$item1, $key, $prefix){ echo "$item1=$key=$prefix<br/>"; $item1 = "$prefix: $item1"; }function test_print($item2, $key){ echo "$key. $item2<br />\n";}echo "Before ...:<br />"; array_walk($fruits, 'test_print');array_walk($fruits, 'test_alter', 'fruit');echo "... and after:<br />"; array_walk($fruits, 'test_print'); /* Before ...: d. lemona. orange b. bananalemon=d=fruitorange=a=fruitbanana=b=fruit... and after: d. fruit: lemona. fruit: orangeb. fruit: banana */
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Les méthodes de copie approfondie de tableaux en PHP incluent : l'encodage et le décodage JSON à l'aide de json_decode et json_encode. Utilisez array_map et clone pour créer des copies complètes des clés et des valeurs. Utilisez Serialize et Unsérialize pour la sérialisation et la désérialisation.

La comparaison des performances des méthodes de retournement des valeurs de clé de tableau PHP montre que la fonction array_flip() fonctionne mieux que la boucle for dans les grands tableaux (plus d'un million d'éléments) et prend moins de temps. La méthode de la boucle for consistant à retourner manuellement les valeurs clés prend un temps relativement long.

1. La fonction SOMME permet de sommer les nombres d'une colonne ou d'un groupe de cellules, par exemple : =SOMME(A1:J10). 2. La fonction MOYENNE permet de calculer la moyenne des nombres dans une colonne ou un groupe de cellules, par exemple : =AVERAGE(A1:A10). 3. Fonction COUNT, utilisée pour compter le nombre de nombres ou de texte dans une colonne ou un groupe de cellules, par exemple : =COUNT(A1:A10) 4. Fonction IF, utilisée pour effectuer des jugements logiques basés sur des conditions spécifiées et renvoyer le résultat correspondant.

La meilleure pratique pour effectuer une copie complète d'un tableau en PHP consiste à utiliser json_decode(json_encode($arr)) pour convertir le tableau en chaîne JSON, puis à le reconvertir en tableau. Utilisez unserialize(serialize($arr)) pour sérialiser le tableau en chaîne, puis désérialisez-le en un nouveau tableau. Utilisez RecursiveIteratorIterator pour parcourir de manière récursive des tableaux multidimensionnels.

La fonction array_group_by de PHP peut regrouper des éléments dans un tableau en fonction de clés ou de fonctions de fermeture, renvoyant un tableau associatif où la clé est le nom du groupe et la valeur est un tableau d'éléments appartenant au groupe.

Le tri des tableaux multidimensionnels peut être divisé en tri sur une seule colonne et en tri imbriqué. Le tri sur une seule colonne peut utiliser la fonction array_multisort() pour trier par colonnes ; le tri imbriqué nécessite une fonction récursive pour parcourir le tableau et le trier. Les cas pratiques incluent le tri par nom de produit et le tri composé par volume de ventes et prix.

La gestion des exceptions en C++ peut être améliorée grâce à des classes d'exceptions personnalisées qui fournissent des messages d'erreur spécifiques, des informations contextuelles et effectuent des actions personnalisées en fonction du type d'erreur. Définissez une classe d'exception héritée de std::exception pour fournir des informations d'erreur spécifiques. Utilisez le mot-clé throw pour lancer une exception personnalisée. Utilisez Dynamic_cast dans un bloc try-catch pour convertir l'exception interceptée en un type d'exception personnalisé. Dans le cas réel, la fonction open_file lève une exception FileNotFoundException. La capture et la gestion de l'exception peuvent fournir un message d'erreur plus spécifique.

La fonction array_group() de PHP peut être utilisée pour regrouper un tableau par une clé spécifiée afin de rechercher les éléments en double. Cette fonction fonctionne selon les étapes suivantes : Utilisez key_callback pour spécifier la clé de regroupement. Utilisez éventuellement value_callback pour déterminer les valeurs de regroupement. Comptez les éléments regroupés et identifiez les doublons. Par conséquent, la fonction array_group() est très utile pour rechercher et traiter des éléments en double.
