Understanding PHP's internal function definitions
Nitpicky but:
References aren't pointers, they are the variables. The address of the variable itself gets passed with a reference, whereas a pointer is a variable containing the address of the variable. A pointer itself has an address. A very subtle yet important difference.The remaining arguments &haystack, &haystack_len, &needle, &offset specify the variables to put the arguments into. As you can see, they are all passed by reference (&), which means that not the variables themselves are passed, but pointers to them.