array_search(isset($Ref_pere[$pere_id]),$Table_chien_par_ID);
Il fait quoi ici ce isset ? Cette fonction sert à tester l'existence d'une variable.
Donc si elle existe c'est remplacé par :
array_search(true ,$Table_chien_par_ID);
autrement dit rechercher la valeur true dans l'array...
$B1 = isset($DB_dog_nom[isset($Ref_pere[$pere_id])]) ;
???
$B1 est un booléen au final, pas sûr que cela soit ce que tu souhaites.
A mon avis tu veux trop jouer avec les conditions ternaires sans savoir les maîtriser ce qui abouti à des codes incohérents comme ceux là.