处理多个变量结果

时间:2013-11-25 18:27:08

标签: php

所以这是我的情况: 我有三个功能进行一些化学反应(合成1(),合成2()和合成3())。 所有这些功能都会给出结果中的答案或失败。 它们最初是单独的脚本,但现在属于一个类。 注意:即使在课堂上,这些功能也能很好地完成。 下面是我实例化类并启动函数的脚本。

我的问题是,因为我正在运行一个反应,它会激发所有功能; 我得到一个正确答案,两个失败或三个失败。

处理这种情况的最佳方法是什么。 我想要一个正确的答案并抑制两个失败或只是在三个失败的情况下显示一个失败(全部失败)。我不指望三个正确的答案。 附:所有答案都是字符串。

 <?php
// create an object for class name
 $aaa = new synthesis();
 $abc = new synthesis();
 $abcd = new synthesis();

// call the functions in the class
$synthesis1 = $aaa->synthesis1();
$synthesis2 = $abc->synthesis2();
$synthesis3 = $abcd->synthesis3();

// call the if functions
$searches = array($synthesis1, $synthesis2, $synthesis3);

foreach($searches as $search) {
if ($aaa->synthesis1($search)){
    echo 'Match found: ' . $search;
    break;
}

    elseif ($abc->synthesis2($search)){
            echo 'Match found: ' . $search;
            break;
        }

        elseif ($abcd->synthesis3($search)){
            echo 'Match found: ' . $search;
            break;
        }

        else{ echo"Please try again or try another reaction";}

}
?>

2 个答案:

答案 0 :(得分:0)

处理此问题的一种简单方法是使用OR逻辑:

if($aaa->synthesis1($search) or $abc->synthesis2($search) or $abcd->synthesis3($search))
{
    echo "Match Found: $search";
    break;
}
else
{
    echo "Please try again or try another reaction.";
}

答案 1 :(得分:0)

如果您有三个单独命名的方法,我不知道为什么需要实例化三个不同的对象。

我认为你可能想要在你的类中添加一个方法来简单地一次运行所有合成方法并返回结果。如下所示:

class synthesis {
    protected $synthesis_methods = array(
        'synthesis1',
        'synthesis2',
        'synthesis3',
        // add more methods here if needed
    }
    public function synthesis1() {
        // your method logic here
    }
    public function synthesis2() {
        // your method logic here
    }
    public function synthesis2() {
        // your method logic here
    }
    public function synthesize_all() {
        $result = false;
        $i = 0;
        while(false === $result && $i < count($this->synthesis_methods)) {
            $result = call_user_func(array($this, $this->synthesis_methods[$i]));
            $i++;
        }
        return $result;
    }
}

然后,您只能实例化一个对象。用法是:

$synth_obj = new synthesis();
var_dump($synth_obj->synthesize_all());