I have always heared that compile time languages (Java, C++ etc) are statically typed and interpreted languages (PHP, Python etc) are dynamically typed, But the question is why they are, Why not a compile time language can be dynamically type and vice versa?
It's not really true. Java bytecodes can be interpreted, indeed they were only interpreted up until around JDK 1.1.5ish. JavaScript is often compiled.
However, an interpreter for a dynamic language is really easy to write. Perhaps try it. Statically typed languages are a bit more difficult, so you may as well compile it anyway. On the other hand, to reasonably compile a dynamic language takes some effort.
Why dynamically type languages are interpreted and statically type languages are compile time language?