添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
6 HashTable * myht; 8 if (zend_parse_parameters(ZEND_NUM_ARGS(), " a " , &input) == FAILURE) { 9 return ; 10 } 12 /* Initialize return array */ 13 array_init(return_value); 15 /* Go through input array and add values to the return array */ 16 myht = Z_ARRVAL_P(input); 17 // 循环遍历数组 18 ZEND_HASH_FOREACH_VAL(myht, entry) { 19 ZVAL_DEREF(entry); 20 /* 数组元素的值只能是字符串或整数 */ 21 if (Z_TYPE_P(entry) == IS_LONG) { // 数组元素值为整数 22 if ((tmp = zend_hash_index_find(Z_ARRVAL_P(return_value), Z_LVAL_P(entry))) == NULL) { // 返回数组中不存在该键 23 zval data; 24 ZVAL_LONG(&data, 1 ); // 首次出现,+1 25 zend_hash_index_update(Z_ARRVAL_P(return_value), Z_LVAL_P(entry), &data); // 添加到返回值数组 26 } else { 27 Z_LVAL_P(tmp)++; // 元素值出现次数+1 28 } 29 } else if (Z_TYPE_P(entry) == IS_STRING) { // 数组元素值为字符串 30 if ((tmp = zend_symtable_find(Z_ARRVAL_P(return_value), Z_STR_P(entry))) == NULL) { 31 zval data; 32 ZVAL_LONG(&data, 1 ); 33 zend_symtable_update(Z_ARRVAL_P(return_value), Z_STR_P(entry), & data); 34 } else { 35 Z_LVAL_P(tmp)++ ; 36 } 37 } else { 38 // 数组元素的值非字符串或整数,则报warning错误。 39 php_error_docref(NULL, E_WARNING, " Can only count STRING and INTEGER values! " ); 40 } 41 } ZEND_HASH_FOREACH_END();