PHP silently casts array keys — strings containing valid decimal integers become ints, bools become 0/1, and null becomes an empty string. This breaks type safety in ways static analysis tools like PHPStan historically couldn't catch: a function typed to accept `array<string, mixed>` can still receive integer keys at runtime,

Sort: