Maison  >  Article  >  développement back-end  >  Une brève discussion sur le code source PHP 20 : à propos des fonctions array_flip et array_reverse

Une brève discussion sur le code source PHP 20 : à propos des fonctions array_flip et array_reverse

不言
不言original
2018-06-28 17:44:341849parcourir

Cet article présente principalement le code source PHP 20 : À propos des fonctions array_flip et array_reverse, qui ont une certaine valeur de référence. Maintenant, je les partage avec vous. Les amis dans le besoin peuvent s'y référer

Une brève discussion. à propos de PHP Code source vingt : À propos de array_flip, fonction array_reverse

array_flip
(PHP 4, PHP 5)

array_flip — échanger des clés et des valeurs dans le tableau
Instructions
array array_flip (array trans)

array_flip() renvoie un tableau inversé, par exemple, les noms de clés dans trans deviennent des valeurs et les valeurs dans trans deviennent des noms de clés.

Notez que la valeur dans trans doit être un nom de clé légal, par exemple, elle doit être un entier ou une chaîne. Un avertissement sera émis si la valeur est du mauvais type et la paire clé/valeur en question ne sera pas inversée.

Si la même valeur apparaît plusieurs fois, le dernier nom de clé sera utilisé comme valeur et tous les autres seront perdus.

array_flip() renvoie FALSE en cas d'échec.
Description du code source : parcourez la table de hachage où se trouve le tableau, retirez la clé, créez un nouveau ZVAL, puis utilisez la valeur du tableau précédent comme clé pour l'écrire dans la table de hachage du tableau renvoyé .
Pour la valeur précédente, seule la valeur précédente est prise en charge LONG et STRING avertira s'il existe d'autres types. Le code source pour le jugement de type est le suivant :

 if (Z_TYPE_PP(entry) == IS_LONG) {
 zend_hash_index_update(Z_ARRVAL_P(return_value), Z_LVAL_PP(entry), &data, sizeof(data), NULL);
 } 
 else if (Z_TYPE_PP(entry) == IS_STRING) {
 zend_symtable_update(Z_ARRVAL_P(return_value), Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &data, sizeof(data), NULL);} else {zval_ptr_dtor(&data); /* will free also zval structure */php_error_docref(NULL TSRMLS_CC, E_WARNING, "Can only flip STRING and INTEGER values!");}

array_reverse

<.>(PHP 4, PHP 5)

array_reverse — Renvoie un tableau avec des cellules dans l'ordre inverse

Description
array array_reverse (array array [, bool préservation_keys])

array_reverse () accepte un tableau tableau en entrée et renvoie un nouveau tableau avec des cellules dans l'ordre inverse, si préserver_keys est VRAI pour conserver les noms de clés d'origine.

Description du code source : étant donné que le tableau est stocké dans la table de hachage et que la table de hachage prend en charge les listes doublement liées,
le programme commence donc à partir du dernier élément de la liste doublement liée, avance et dans le processus , tous les éléments Faites une copie (c'est-à-dire (*entry)->refcount++;)
et écrivez-la dans la table de hachage où se trouve le tableau renvoyé.

Pour la liste doublement chaînée dans la table de hachage, vous pouvez consulter la définition de la table de hachage, qui a été introduite dans l'article précédent :
http://www.php.cn/php-weizijiaocheng- 405316.html

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Une brève discussion du code source PHP 19 : À propos de array_file, fonction range

Une brève discussion du code source PHP 10 Huit : À propos de array_diff_key, array_diff_assoc, array_udiff_assoc Fonction

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