<?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",
这样的键和值没有|
,但我想要值。 那么我有没有办法选择STY
,QTY
和OTY
这样的密钥并处理它们?
目前的输出:
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
答案 0 :(得分:1)
在爆炸$ 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);
}
}
}
答案 1 :(得分:0)
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;
}