PHP 选择数组元素


PHP select array elements

<?php
echo '<pre>';
$pid = '129';
$families = array
(
      "Griffin"=>array
                      (
                      "PTY"=>"Peter",
                      "STY"=>"Z",
                      "QTY"=>"A|F"
                      ),
      "Quagmire"=>array
                      (
                      "NTY"=>"Glenn"
                      ),
      "Brown"=>array
                  (
                  "FTY"=>"Cleveland",
                  "OTY"=>"Q|G|T|Y",
                  "PTY"=>"Junior"
                  )
);

function buildid($pid,$key,$val){
    $id = $pid.'-'.$key.'-'.$val;
    // echo '<br>';
    if (preg_match("/'|/",$id)){
        $id = explode("|",$id);
        print_r($id);
    }
    return;
}
  foreach($families as $familieskey=>$familiesvalue){
    foreach($familiesvalue as $skey=>$sval){
        buildid("$pid","$skey","$sval");
    }
  }
echo '</pre>';
?>

执行上面的代码,您将获得使用$id处理的所有数据,但我的要求是,如果我找到$id我想要的|,如下所示,

案例2:我也想要键和值,例如"STY"=>"Z",这里没有|但我想要值。那么有什么方法可以选择诸如 STYQTYOTY 之类的键并处理它们呢?

当前输出:

Array
(
    [0] => 129-QTY-A
    [1] => F
)
Array
(
    [0] => 129-OTY-Q
    [1] => G
    [2] => T
    [3] => Y
)

预期产出:

129-QTY-A
129-QTY-F
129-OTY-Q
129-OTY-G
129-OTY-T
129-OTY-Y

$val爆炸后生成$id将解决此问题。

function buildid($pid,$key,$val){
        if (preg_match("/'|/",$val)){
            $val = explode("|",$val);
            foreach($val as $val1)
            {
                 $id = $pid.'-'.$key.'-'.$val1;
                 echo "<br>";       
                 print_r($id);
            }    
       }
  }
function buildid($pid,$key,$val){
    if (preg_match("/'|/",$val)){
        $id = explode("|",$val);
        $data = array();
        foreach($id as $entity){
          $data[] = $pid.'-'.$key.'-'.$entity;
        }
        print_r($data);
    }
    return;
}