Nicht ganz - wenn weder $_GET noch $_POST, ist $p zwar null, aber ggf. hast Du auch eine Notice auf dem Bildschirm, weil PHP beim Zugriff auf nicht existente Array-Indexe eine raushaut.
Wenn Dir Notices egal sind (weil unterdrückt), kannst Du Dir das Leben ab PHP 7 mit dem null coalescing operator weiter vereinfachen:
$p = $_GET['p'] ?? $_POST['p'];
Rolf