我有3个可以设置的数组。他们的钥匙是字符串。
这个If ... Else
会更有效率吗?if( isset( $arrayA[ $id ] ) )
{
if( isset( $arrayB[ $id ] ) )
{
if( isset( $arrayC[ $id ] ) )
{
}
else
{
}
}
else
{
if( isset( $arrayC[ $id ] ) )
{
}
else
{
}
}
}
else
{
if( isset( $arrayB[ $id ] ) )
{
if( isset( $arrayC[ $id ] ) )
{
}
else
{
}
}
else
{
if( isset( $arrayC[ $id ] ) )
{
}
}
}
或Switch ......像这样的案例?
$ABC = ( isset( $arrayA[ $id ] ) ? "1" : "0" ) . ( isset( $arrayB[ $id ] ) ? "1" : "0" ) . ( isset( $arrayC[ $id ] ) ? "1" : "0" );
switch( $ABC )
{
case "001":
case "010":
case "011":
case "100":
case "101":
case "110":
case "111":
}
请注意" 000"案件永远不会出现在我的剧本中。
假设我知道组合'频率。 更频繁 - > " 110" " 111" " 010" " 100"," 101"," 001" " 011" < - 不太频繁
无论如何" 110"和" 111"几乎总是发生。 " 010"可能每10 ^ 4次发生1次或累计发生10 ^ 5次" 110" +" 111"。
这会不会......其他更好的解决方案?
if( isset( $arrayA[ $id ] ) and isset( $arrayB[ $id ] ) )
{
if( isset( $arrayC[ $id ] ) )
{
}
else
{
}
}
else
{
$ABC = ( isset( $arrayA[ $id ] ) ? "1" : "0" ) . ( isset( $arrayB[ $id ] ) ? "1" : "0" ) . ( isset( $arrayC[ $id ] ) ? "1" : "0" );
switch( $ABC )
{
case "001":
case "010":
case "011":
case "100":
case "101":
}
}
答案 0 :(得分:0)
转到switch
。在这种情况下,它更具可读性,您可以比部署的if-else
系列更轻松地跟踪输出。你想要的最后一件事是让你和其他任何人在你的代码上工作,与不必要的复杂性的帮助混淆。保持简单。
答案 1 :(得分:0)
关于执行时间,使用单个switch语句的解决方案更可取,因为它不需要进行3次比较即可到达"对"方法。 switch语句的层次结构并不重要,但我想对于这种简单的计算,如果只使用switch或组合开关,差异就不会很大。
您可以使用最后一种方法计算最佳案例方案的操作时间。无论如何,只使用switch语句会在所有三种情况下产生完全相同的计算复杂度。