Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 减少所有可能性的条件数量_Php_Oop_If Statement_Conditional Statements - Fatal编程技术网

Php 减少所有可能性的条件数量

Php 减少所有可能性的条件数量,php,oop,if-statement,conditional-statements,Php,Oop,If Statement,Conditional Statements,下面是我的代码,用于检查两个元素的可能条件数量,是否有减少检查条件数量的方法(不是任何特定的检查规则) 我提出这个问题的原因是,我担心如果我添加一个额外的元素,它将以一种广泛的方式最大化检查条件 我该怎么做 这是我的代码: <?php $A = 'alpha'; $B = 'beta'; $result = ''; if($A != '' && $B !='') { $result .= 'Both has Value'; // both conta

下面是我的代码,用于检查两个元素的可能条件数量,是否有减少检查条件数量的方法(不是任何特定的检查规则)

我提出这个问题的原因是,我担心如果我添加一个额外的元素,它将以一种广泛的方式最大化检查条件

我该怎么做

这是我的代码:

<?php
$A = 'alpha';
$B = 'beta';

$result = '';

if($A != '' && $B !='')  
{
    $result .= 'Both has Value';
    // both contains value
}
elseif($A != '' && $B =='')
{
    $result .= 'Only A';
     // only a contains value
}
elseif($A == '' && $B !='') 
{
    $result .= 'Only A';
    // only b contains value
}
else 
{
    $result .= 'Both are Empty';
    // both contains no value
}

echo $A.' - '.$B.'<br>';
echo $result;
?>

试试这个

<?php

$a="123";
$b="";
$c="33";
$result="";
if($a !="")
{
if($result=="")
{
$result .="a"; //Get value $a only
} else {

$result .=" and a"; //Get  value $a with $b or $c    
}
}
if($b !="" )
{
if($result=="")
{
$result .="b"; //Get value $b only
} else {

$result .=" and b"; //Get  value $b with $a or $c    
}
}
if($c !="")
{
if($result=="")
{
$result .="c";  //Get value $c only
} else {

$result .=" and c"; //Get  value $c with $b or $a   
}
}
echo $result;
?>

试试这个

<?php

$a="123";
$b="";
$c="33";
$result="";
if($a !="")
{
if($result=="")
{
$result .="a"; //Get value $a only
} else {

$result .=" and a"; //Get  value $a with $b or $c    
}
}
if($b !="" )
{
if($result=="")
{
$result .="b"; //Get value $b only
} else {

$result .=" and b"; //Get  value $b with $a or $c    
}
}
if($c !="")
{
if($result=="")
{
$result .="c";  //Get value $c only
} else {

$result .=" and c"; //Get  value $c with $b or $a   
}
}
echo $result;
?>

这个怎么样?我刚刚去掉了多余的支票

if($A && $B)  
{
    $result .= 'Both has Value';
    // both contains no value
}
elseif($A)
{
    $result .= 'Only A';
     // only a contains value
}
elseif($B) 
{
    $result .= 'Only B';
    // only b contains value
}
else 
{
    $result .= 'Both are Empty';
    // both contains value
}

echo $A.' - '.$B.'<br>';
echo $result;
if($A&&B)
{
$result.='两者都有值';
//两者都不包含任何值
}
埃尔塞伊夫(A美元)
{
$result.='仅限A';
//只包含一个值
}
埃尔塞伊夫(B美元)
{
$result.='仅限B';
//只有b包含值
}
其他的
{
$result.='两个都是空的';
//两者都包含价值
}
回音$A.-'.$B.
'; 回声$结果;
这个怎么样?我刚刚去掉了多余的支票

if($A && $B)  
{
    $result .= 'Both has Value';
    // both contains no value
}
elseif($A)
{
    $result .= 'Only A';
     // only a contains value
}
elseif($B) 
{
    $result .= 'Only B';
    // only b contains value
}
else 
{
    $result .= 'Both are Empty';
    // both contains value
}

echo $A.' - '.$B.'<br>';
echo $result;
if($A&&B)
{
$result.='两者都有值';
//两者都不包含任何值
}
埃尔塞伊夫(A美元)
{
$result.='仅限A';
//只包含一个值
}
埃尔塞伊夫(B美元)
{
$result.='仅限B';
//只有b包含值
}
其他的
{
$result.='两个都是空的';
//两者都包含价值
}
回音$A.-'.$B.
'; 回声$结果;
在结果中使用布尔标志。在这种情况下,位0(0或1)表示A是否为空,位2(0或2)表示B为空

$flags = 0;
if  ($A != '')
    $flags |= 1;   //  Binary 0001 = 1
if  ($B != '')
    $flags |= 2;   //  Binary 0010 = 2
$rMsg = array ("Both empty", //  0 : 0000
               "A only",     //  1 : 0001
               "B only",     //  2 : 0010
               "Both full"); //  3 : 0011

$result .= $rMsg [$flags];
我想你是在寻找一个有用的原则,而不是确切的细节。这就是你的想法吗

更一般地说,给定一个项目数组(最多32个或64个,取决于MAX_INT):

$flags=0;
对于($i=0;$i<计数($items);$i++)
如果($items[$i]!='')

$flags |=1在结果中使用布尔标志。在这种情况下,位0(0或1)表示A是否为空,位2(0或2)表示B为空

$flags = 0;
if  ($A != '')
    $flags |= 1;   //  Binary 0001 = 1
if  ($B != '')
    $flags |= 2;   //  Binary 0010 = 2
$rMsg = array ("Both empty", //  0 : 0000
               "A only",     //  1 : 0001
               "B only",     //  2 : 0010
               "Both full"); //  3 : 0011

$result .= $rMsg [$flags];
我想你是在寻找一个有用的原则,而不是确切的细节。这就是你的想法吗

更一般地说,给定一个项目数组(最多32个或64个,取决于MAX_INT):

$flags=0;
对于($i=0;$i<计数($items);$i++)
如果($items[$i]!='')

$flags |=1检查我只为这个问题创建的这个程序。这里把变量放在一个数组中。您可以使用任意数量的元素

$array = array('alpha','beta','theta','gamma');
$result = array();
$final = '';
foreach($array as $key=>$value)
{
    if($value != '')
    {
        array_push($result,$value);
        if(sizeof($result) == 1)
            $final .= $value;
            else
        $final .= ','.$value;
    }
}
if(sizeof($result) == 0)
    echo "All are Empty";

elseif(sizeof($result) == sizeof($array))
    echo "All are Value";

else{
    echo "Only ".$final;
}

检查我为这个问题创建的这个程序。这里把你的变量放在一个数组中。您可以使用任意数量的元素

$array = array('alpha','beta','theta','gamma');
$result = array();
$final = '';
foreach($array as $key=>$value)
{
    if($value != '')
    {
        array_push($result,$value);
        if(sizeof($result) == 1)
            $final .= $value;
            else
        $final .= ','.$value;
    }
}
if(sizeof($result) == 0)
    echo "All are Empty";

elseif(sizeof($result) == sizeof($array))
    echo "All are Value";

else{
    echo "Only ".$final;
}

以更抽象的方式,这个有用的小函数:

function partition($ary, $predicate) {
    $result = [[], []];
    foreach($ary as $item)
        $result[$predicate($item) ? 1 : 0] []= $item;
    return $result;
}
根据某些条件(以布尔函数形式给出)将数组拆分为两部分。适用于您的特定问题:

$data = array('a', 'b', 'c', '');

list($bad, $good) = partition($data, 'boolval');

if(!$good)
    echo 'all are falsy';
elseif(!$bad)
    echo 'all are truthy';
else {
    echo 'bad  items: '; print_r($bad);
    echo 'good items: '; print_r($good);
}

以更抽象的方式,这个有用的小函数:

function partition($ary, $predicate) {
    $result = [[], []];
    foreach($ary as $item)
        $result[$predicate($item) ? 1 : 0] []= $item;
    return $result;
}
根据某些条件(以布尔函数形式给出)将数组拆分为两部分。适用于您的特定问题:

$data = array('a', 'b', 'c', '');

list($bad, $good) = partition($data, 'boolval');

if(!$good)
    echo 'all are falsy';
elseif(!$bad)
    echo 'all are truthy';
else {
    echo 'bad  items: '; print_r($bad);
    echo 'good items: '; print_r($good);
}

感谢您减少了检查条件。添加更多变量时,检查条件仍然会显著增加案例数量。是的,但是如果我增加元素数量,有没有办法减少检查条件?感谢您减少了检查条件。添加更多变量时,检查条件仍然会显著增加案例数量。是的,但是,如果我增加元素的数量,有没有办法减少这种情况呢?这是一个很好的想法,我应该使用移位,这样他就可以添加两个以上的参数<代码>$flags我想让第一个易于理解。现在添加了一个更强大的示例。我的想法很好,我应该使用移位,这样他就可以添加2个以上的参数<代码>$flags我想让第一个易于理解。现在添加了更强大的示例。