La mejor manera de detectar 'solapes' entre objetos es comprobar la interferencia de sus posiciones.
El código que plenteas es bastante raro...
El código genérico podría ser algo así:
Código PHP:
function solapa(obj1,obj2){
h=false; //Flag de solape horizontal
v=false; //Flag de solape vertical
if (obj1.x1>obj2.x1 && obj1.x1<obj2.x2 || obj1.x2>obj2.x1 && obj1.x2<obj2.x2) h=true;
if (obj1.y1>obj2.y1 && obj1.y1<obj2.y2 || obj1.y2>obj2.y1 && obj1.y2<obj2.y2) v=true;
return (h&&v); //Devolver la unión de flags. Solo será true si ambos es true
}
Esto no considera el caso de que se rocen. Si se rozan devuelve que no solapan, aunque en realidad solapan 1px. Para modificar este comportamiento hay que cambiar los "menor" y "mayor" por "menor o igual" y "mayor o igual".
Luego, y ya para nota, se podría hacer una función que devuelva si solapan, se rozan o ni se tocan...