Me suena a que hay una confusion con el for... Los arrays secuenciales tienen indices numericos que empiezan desde cero, o sea
Código PHP:
for(i=0;i<total.value;i++) {
if(mensajesp[i]==id){
delete mensajesp[i];
}
}
Una pregunta: el valor guardado en la variable id se puede repetir? porque sino te convendria poner un break despues del delete