static XMLRPC_VECTOR_TYPE determine_vector_type (HashTable *ht)
{
	int bArray = 0, bStruct = 0, bMixed = 0;
	zend_ulong num_index, last_num = 0;
	zend_string* my_key;

	ZEND_HASH_FOREACH_KEY(ht, num_index, my_key) {
		if (my_key == NULL) {
			if (bStruct) {
				bMixed = 1;
				break;
			} else if (last_num > 0 && last_num != num_index-1) {
				bStruct = 1;
				break;
			}
			bArray = 1;
			last_num = num_index;
		} else {
			if (bArray) {
				bMixed = 1;
				break;
			}
			bStruct = 1;
		}
	} ZEND_HASH_FOREACH_END();
	return bMixed ? xmlrpc_vector_mixed : (bStruct ? xmlrpc_vector_struct : xmlrpc_vector_array);
}
static XMLRPC_VECTOR_TYPE determine_vector_type (HashTable *ht)
{
	int bArray = 0, bStruct = 0, bMixed = 0;
	zend_ulong num_index, last_num = 0;
	zend_string* my_key;

	ZEND_HASH_FOREACH_KEY(ht, num_index, my_key) {
		if (my_key == NULL) {
			if (bStruct) {
				bMixed = 1;
				break;
			} else if (last_num > 0 && last_num != num_index-1) {
				bStruct = 1;
				break;
			}
			bArray = 1;
			last_num = num_index;
		} else {
			if (bArray) {
				bMixed = 1;
				break;
			}
			bStruct = 1;
		}
	} ZEND_HASH_FOREACH_END();
	return bMixed ? xmlrpc_vector_mixed : (bStruct ? xmlrpc_vector_struct : xmlrpc_vector_array);
}