How does it work?

For each parameter in your functions prototype there will be a local C variable of the same name and an appropriate type.

For string parameters the actual string length is storen in an additional int variable that is named like the parameter but with an additional '_len' suffix.

The mapping from PHP to C variable types is as follows:
PHP typeC type
boolzend_bool
intlong
floatdouble
stringchar *
arrayzval *
objectzval *
resourcezval *
callbackzval *
mixedzval *