>>28Weak typing is when you can throw away the type of a value, like
void*
.
There's no way to reconstruct the original type. In C, it's impossible to know whether it originally pointed to a single byte or an array of 1000 pointers to floats.
If you can turn the pointer to a byte into a pointer to an array of 1000 pointers to floats, you are using weak typing. There's no guarantee that they are all valid pointers to floating-point numbers at that location.
If it's impossible to throw away the type of a value and a type guarantees that the value always belongs to that type, the language is strongly typed.
JavaScript and PHP are, in fact, strongly typed. They just have strange and unintuitive definitions for the built-in operators.