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 inverseDescription
array array_reverse (array array [, bool préservation_keys])
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
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!