Understanding PHP's internal function definitions

  • Nitpicky but:

        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.
    
    
    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.