检查数组中是否存在元素,并在if条件PHP中返回



我有一个数组,它将有3种情况,如下所示:

第一:

array: [
"QtyIn" => "0"
"QtyOut" => "0"
]

第二:

array: [
"QtyIn" => "0"
]

第三:

array: [
"QtyOut" => "0"
]

现在我想检查QtyIn=0,返回A.QtyOut=0,返回B.如果QtyIn和QtyOut=0,返回C

if ( isset($data['QtyIn']) && isset($data['QtyOut']) ) {
if ( $data['QtyIn'] <= 0 && $data['QtyOut'] <= 0 ) {
return A
}
} 
if ( isset($data['QtyIn']) ) {
if ( $data['QtyIn'] <= 0 ) {
return B
}
}
if ( isset($data['QtyOut']) ) {
if ( $data['QtyOut'] <= 0 ) {
return C
}
}

有没有办法写得更干净一些?

谢谢!

if ( isset($data['QtyIn']) && isset($data['QtyOut']) ) {
if ( $data['QtyIn'] == 0 && $data['QtyOut'] == 0 ) {
return A;
}else if ( $data['QtyIn'] == 0 ) {
return B;
}else if ( $data['QtyOut'] == 0 ) {
return C
}
} 

如果您要做的第一件事是将值存储在临时变量中,并在未设置值的情况下应用??将值设置为某个非零值,那么测试会变得更短。。。

function check($data)   {
$in = $data['QtyIn'] ?? -1;
$out = $data['QtyOut'] ?? -1;
if ( $in == 0 && $out == 0 ) {
return 'A';
}
if ( $in == 0 ) {
return 'B';
}

if ( $out == 0 ) {
return 'C';
}
}
echo check(['QtyIn' => 0, 'QtyOut' => 0]);
echo check(['QtyIn' => 0]);
echo check(['QtyOut' => 0]);

您可以使用三元表达式来缩短它,但这不太可读(IMHO(。。。

function check($data)   {
$in = $data['QtyIn'] ?? -1;
$out = $data['QtyOut'] ?? -1;
return ( $in == 0 && $out == 0 ) ? 'A' : 
(( $in == 0 ) ? 'B' : 
(( $out == 0 ) ? 'C' : ''));
}

这段代码也使用==而不是<=0,正如@Jeto在他的评论中指出的那样,您声明它必须为=0。

Cleaner并不意味着更短。例如,如果你想更干净,可以这样做:

$qtyIn = $data['QtyIn'] ?? null;
$qtyOut = $data['QtyOut'] ?? null;
if (isZeroOrLess($qtyIn) && isZeroOrLess($qtyOut)) {
return A;
}
if (isZeroOrLess($qtyIn)) {
return B;
}
if (isZeroOrLess($qtyOut)) {
return C;
}
function isZeroOrLess($val = null)
{
if ($val === null) {
return false;
}
return $val <= 0;
}

相关内容

最新更新