ma intval(!empty($_GET['p'])) dici che funziona?

empty() dice true o false, non dice il valore di $_GET['p'] in caso sia definito, quindi sarà sempre

max(0,0)

oppure

max(0,1)

a seconda che empty($_GET['p']) sia true o false, no?

Edit: ah no, mi sa che ho visto male le parentesi