zend によって PHP に与えられるすべての変数は構造的な方法で保存され、文字列の保存と配列の保存はハッシュ テーブルの形式で保存されます (ハッシュによって保存されたアドレスが効果的に競合を軽減できることは誰もが知っています)。 -hash ハッシュ テーブルの概念はご存知でしょう)、php の構造は次のとおりです:
.....
if ( Z_TYPE_P(array) == IS_ARRAY) {
//エラー処理
if (Z_ARRVAL_P(array)->nApplyCount > 1) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "recursion detected");
return 0;
//zend_hash_num_elements を通じて長さを直接取得します
cnt = zend_hash_num_elements(Z_ARRVAL_P(array));再カウント、統計のサイクル(mode == count_recursive){
hashpositionpos; ) &element, &pos) == SUCCESS;
zend_hash_move_forward_ex(Z_ARRVAL_P(array), &pos)
) {
Z_ARRVAL_P(array)->nApplyCount++
cnt += php_count_recursive(*element, COUNT_RECURSIVE TSRMLS_CC);
Z_ARRVAL_P(配列) ->nApplyCount--;
}
}
}
return cnt
//ファイル 5: zend/zend_hash.c
//zend_hash_num_elements の実装
ZEND_API int zend_hash_num_elements (const ハッシュテーブル *ht)
{
IS_CONSISTENT(ht);
return ht->nNumOfElements
}
http://www.bkjia.com/PHPjc/324079.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/324079.html技術記事 zend によって PHP に与えられたすべての変数は構造的な方法で保存され、文字列の保存と配列の保存もハッシュ テーブルの形式で保存されます (ハッシュが保存されることは誰もが知っています...
)。