Table des matières
array_filterUtiliser la fonction de rappel pour filtrer les cellules du tableau
" >array_filterUtiliser la fonction de rappel pour filtrer les cellules du tableau
array_walk — 使用用户自定义函数对数组中的每个元素做回调处理" >array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
Maison développement back-end tutoriel php Fonctions et tableaux de rappel

Fonctions et tableaux de rappel

Apr 14, 2018 pm 04:37 PM
函数 数组

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_filterUtiliser 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écisioncallbackFormulaire des paramètres reçus

  • ARRAY_FILTER_USE_KEY - Accepte le nom de la clé comme seul paramètrecallback

  • ARRAY_FILTER_USE_BOTH - callbackAccepter à 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 )
Copier après la connexion

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

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
Copier après la connexion
array_map — 为数组的每个元素应用回调函数

说明:array array_map ( callable $callback , array $array1 [, array $... ] )

array_map() : Renvoie un tableau, qui est appliqué à chaque élément de array1 callbackTableau 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 )
Copier après la connexion


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

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

结果如下:


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

结果如下:

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

这里讨论array为空的情况:

function sum($carry, $item){    
echo "如果这里执行了,就打印...";    
return $carry;}$x = array();
print_r(array_reduce($x, "sum",array("a","b")));
//结果:
Array ( [0] => a [1] => b )
Copier après la connexion

可以看出,当数组为空的时候,回调函数根本就没有执行,而是把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
 */
Copier après la connexion


           

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

L'art de PHP Array Deep Copy : utiliser différentes méthodes pour obtenir une copie parfaite L'art de PHP Array Deep Copy : utiliser différentes méthodes pour obtenir une copie parfaite May 01, 2024 pm 12:30 PM

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.

Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes Inversion des valeurs clés du tableau PHP : analyse comparative des performances de différentes méthodes May 03, 2024 pm 09:03 PM

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.

Collection complète de formules de fonctions Excel Collection complète de formules de fonctions Excel May 07, 2024 pm 12:04 PM

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.

Meilleures pratiques pour la copie approfondie des tableaux PHP : découvrez des méthodes efficaces Meilleures pratiques pour la copie approfondie des tableaux PHP : découvrez des méthodes efficaces Apr 30, 2024 pm 03:42 PM

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.

Application de la fonction de regroupement de tableaux PHP dans le tri des données Application de la fonction de regroupement de tableaux PHP dans le tri des données May 04, 2024 pm 01:03 PM

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.

Pratique du tri multidimensionnel des tableaux PHP : des scénarios simples aux scénarios complexes Pratique du tri multidimensionnel des tableaux PHP : des scénarios simples aux scénarios complexes Apr 29, 2024 pm 09:12 PM

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.

Exception de fonction C++ avancée : gestion personnalisée des erreurs Exception de fonction C++ avancée : gestion personnalisée des erreurs May 01, 2024 pm 06:39 PM

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.

Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double Le rôle de la fonction de regroupement de tableaux PHP dans la recherche d'éléments en double May 05, 2024 am 09:21 AM

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.

See all articles