需要更好更简单的条件链接解决方案



我有三个条件/变量组合,例如下面的金额:

$a = 15000; $b = 10000; $c = 5000;
or
$a = 10000; $b = 15000; $c = 0;
or
$a = 12000; $b = 0; $c = 15000;
etc. 

以上$a、$b或$c至少不为0(零)。

如果每个数组的数量不为0(零),它有自己的关联数组,例如,如果$b == 0,则$b_array将不会设置/创建,假设所有数组都不为0(零),则创建以下数组:

$a_array = array('id'=>1);
$b_array = array('id'=>2);
$c_array = array('id'=>3);

如果$a/$b/$c不为0(零),则如果$b或$c不为零,则需要链接到$a或$b(如果不为零),如下所示:

if($a != 0 && $b != 0 && $c != 0){
$b_array['id_link'] = $a_array['id'];
$c_array['id_link'] = $a_array['id'];
} elseif ($a != 0 && $b != 0 && $c == 0){
$b_array['id_link'] = $a_array['id'];
} elseif ($a != 0 && $b == 0 && $c != 0){
$c_array['id_link'] = $a_array['id'];
} elseif ($a == 0 && $b != 0 && $c != 0){
$c_array['id_link'] = $b_array['id'];
}

上述条件语句的结果似乎是正确的,您可以在php sandbox

检查。对于条件代码是否有更好的想法,是否有一个缺失的条件(错误处理)。任何想法或解决方案都非常感谢。谢谢! !

如果我正确理解你的问题,而不是检查每一个可能的组合,只是得到第一个非零数字,并将它的id作为id_link分配给所有它们,如下所示:

<?php
$id_link = -1;
if($a !== 0){
$id_link = $a_array['id'];
}else if($b !== 0){
$id_link = $b_array['id'];
}else if($c !== 0){
$id_link = $c_array['id'];
}

$a_array['id_link'] = ($b_array['id_link'] = ($c_array['id_link'] = $id_link));
<<p>

在线演示/strong>(表达式中的括号只是为了可读性而添加的,因为它们在PHP中是多余的)


更新:

如果你想离开数组与它对应的变量没有id_link,那么你可以使用另一个3 If条件来照顾它。

<?php
$id_link = -1;
if($a !== 0){
$id_link = $a_array['id'];
}else if($b !== 0){
$id_link = $b_array['id'];
}else if($c !== 0){
$id_link = $c_array['id'];
}
if($a !== 0){
$a_array['id_link'] = $id_link;
}
if($b !== 0){
$b_array['id_link'] = $id_link;
}
if($c !== 0){
$c_array['id_link'] = $id_link;
}
<<p>在线演示/strong>