<?php
echo '<pre>';
error_reporting(E_ALL);
$pid = '129';
$families = array
(
      "Griffin"=>array
                      (
                      "PTY"=>"Peter",
                      "STY"=>"X",
                      "QTY"=>"A|F"
                      ),
      "Quagmire"=>array
                      (
                      "NTY"=>"Glenn"
                      ),
      "Brown"=>array
                  (
                  "FTY"=>"Cleveland",
                  "OTY"=>"Q|G|T|Y",
                  "PTY"=>"Junior"
                  )
);
global $allid;
$allid = array();
function buildid($pid,$key,$val){
    if (preg_match("/\|/",$val)){
        $val = explode("|",$val);
            foreach($val as $val1){
                $id = $pid.'-'.$key.'-'.$val1;
                $allid[] = $id;
            }
    }
}
print_r($allid);  
foreach($families as $familieskey=>$familiesvalue){
    foreach($familiesvalue as $skey=>$sval){
        buildid($pid,$skey,$sval);
    }
}
echo '</pre>';
?>
Expected output for the above code:
Case1:
   Array
    (
        [0] => 129-QTY-A
        [1] => 129-QTY-F
    )
    Array
    (
        [0] => 129-OTY-Q
        [1] => 129-OTY-G
        [2] => 129-OTY-T
        [3] => 129-OTY-Y
    )
Case2:
 Array
    (
      [0] => 129-QTY-A
      [1] => 129-QTY-F
      [2] => 129-OTY-Q
      [3] => 129-OTY-G
      [4] => 129-OTY-T
      [5] => 129-OTY-Y
    )
 
     
     
    