用不同的逻辑将两个foreach循环组合成一个



我正在寻找将2个foraech循环合并为一个(合并2个函数)的方法:结果函数应该同时返回:($is - boolean &$d - array)。两个函数中的可遍历数据-相同。这可能吗?有什么好的解决办法呢?

public function func1($p, $c) {

$is = 0;
if (!empty($p)) {
foreach($p as $k=>$v) {

if ((!empty($c['prod']) && $c['prod'] == $v['ref'] && $c['status'])) {
$is = 1;
break;
}
}
}

return $is;
}
public function func2($p) {

$d      = [];

if (!empty($p)) {
foreach($p as $k=>$v) {

$prod = [
'name'      => $v['name'], 
'price'     => $v['price'],
'reference' => $v['ref']                    
];

$d[] = $prod;           
}
}

return $d;
}

谢谢。

我的看法,但没有经过测试。

public function func3($p, $c) {
$is = 0;
$d = [];
if (!empty($p)) {
foreach($p as $k=>$v) {
$d[] = [
'name'      => $v['name'], 
'price'     => $v['price'],
'reference' => $v['ref']                    
];

if ($is === 0 && (!empty($c['prod']) && $c['prod'] == $v['ref'] && $c['status'])) {
$is = 1;
}
}
}

return [$is, $d];
}

最新更新