ホームページ  >  記事  >  バックエンド開発  >  PHP ソースコードに関する簡単な説明 10: array_keys、array_values 関数について

PHP ソースコードに関する簡単な説明 10: array_keys、array_values 関数について

不言
不言オリジナル
2018-06-28 17:03:012173ブラウズ

この記事では、主に PHP ソース コード 10 についての簡単な説明を紹介します。array_keys 関数と array_values 関数については、必要な友人に参照していただくために共有します。 ##新年最初 この記事では、まず友人の皆様に新年明けましておめでとうございます

今日は時間があるのでコードを読んで記念に何か書きます!

array array_keys (array input [,mixed search_value [, bool strict]])

array_keys() 入力配列内の数値または文字列のキー名を返します。

オプションのパラメータ search_value が指定されている場合、値のキー名のみが返されます。それ以外の場合は、入力配列内のすべてのキーが返されます。 PHP 5 以降では、strict パラメーターを使用して等価比較 (===) を実行できます。

array_keys 関数は、standard/array.c ファイル PHP_FUNCTION(array_keys) の 2416 行目に実装されています。

プログラムは通常の PHP スタイルに従い、入力が正しいかどうかを最初に判断します。は 3 番目のパラメータです。サイズを決定する関数は is_identical_function を使用します (デフォルトでは is_equal_function 関数が使用されます)

次に、返された配列を初期化し、指定された配列を走査し、各要素のキー値を取得して、それを返される配列は、数値と文字列の 2 種類に分けられます。最も重要な関数は、ハッシュ演算関数 zend_hash_get_current_key_ex (現在の要素のキー値を取得する) です。

  ZEND_API int zend_hash_get_current_key_ex(HashTable *ht, char **str_index, uint *str_length, ulong *num_index, zend_bool duplicate, HashPosition *pos){
    Bucket *p; 
    p = pos ? (*pos) : ht->pInternalPointer; 
    IS_CONSISTENT(ht);     if (p) {
        if (p->nKeyLength) {    //    数字型的nKeyLength长度为0
            if (duplicate) {
                *str_index = estrndup(p->arKey, p->nKeyLength - 1);
            } else {
                *str_index = p->arKey;    //    /* arKey存储key名称(字符串类型的key)必须是最后一个成员,*/
            }
            if (str_length) {
                *str_length = p->nKeyLength;
            }
            return HASH_KEY_IS_STRING;
        } else {
            *num_index = p->h;    //    存储数字key值
            return HASH_KEY_IS_LONG;
        }
    }
    return HASH_KEY_NON_EXISTANT;}

この関数の理解主にバケット定義の理解に依存します

バケット関連のコンテンツについては、http://www.php.cn/php-weizijiaocheng-405316.html

array array_values を参照してください。 (配列入力)

array_values() は入力配列のすべての値を返し、それらの数値インデックスを作成します。

array_values 関数は基本的に array_keys の関数実装と似ていますが、zend_hash_get_current_key_ex 操作と値の型を決定する操作がありません。


上記がこの記事の全内容です。皆様の学習に役立つことを願っています。 詳細については、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

PHP ソース コード 9 の簡単な説明: array_unshift、array_push の概要


簡単な説明PHP ソース コード 8: array_pop、array_shift の概要


PHP ソース コード 7: nl2br、ltrim、rtrim、trim 関数について

以上がPHP ソースコードに関する簡単な説明 10: array_keys、array_values 関数についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。