この記事では、主に 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 サイトの他の関連記事を参照してください。