如何关联php函数中的上一个值?

如何关联php函数中的上一个值?,php,function,if-statement,Php,Function,If Statement,好吧,这有点难以解释,但基本上我编写了一个PHP函数来打印a标记,但需要一些逻辑。这是我到目前为止所拥有的 function print_a($element_name, $completed_system, $category_name){ // hw_bottom // hw_top // hw_center $elements = array("hardware", "software", "payment", "service", "optional");

好吧,这有点难以解释,但基本上我编写了一个PHP函数来打印a标记,但需要一些逻辑。这是我到目前为止所拥有的

function print_a($element_name, $completed_system, $category_name){
    // hw_bottom
    // hw_top
    // hw_center
    $elements = array("hardware", "software", "payment", "service", "optional");
    $last_category = last_category($completed_system);
    if($last_category == $category_name){
        echo "<a class=\"{$element_name} hw_center lf\"></a>";
    }else{
        echo "<a class=\"{$element_name} hw_bottom lf\"></a>";
    }
}
看起来一切正常,但我的逻辑有点偏离…基本上我需要的是打印三个类中的任何一个hw_bottom,hw_center,或者hw_top,我的逻辑现在的工作方式是,如果满足if条件,我打印hw_center…这是正确的…但我需要的是,如果if条件在硬件之后匹配,我需要将所有之前的条件都转到hw_top,例如:

如果条件匹配付款,那么这就是我需要的

            <a class="hw-tab hw_top lf"></a>
            <a class="sw-tab hw_top lf"></a>
            <a class="pp-tab hw_center lf"></a>
            <a class="serv-tab hw_bottom lf"></a>
            <a class="ou-tab hw_bottom lf"></a>

正如你所看到的,付款后所有的都是hw_底部,付款前所有的都是hw_顶部,这是hw_中心……我知道这很难解释……如果有人需要更多信息,请告诉ms

更新

这是我在回顾了所有答案后提出的解决方案

function print_a($completed_system){
  $topClass = true;
  $elements = array("hw-tab" => "hardware", "sw-tab" => "software", "pp-tab" => "payment", "serv-tab" => "service", "ou-tab" => "optional");
    $last_category = last_category($completed_system);
  foreach ($elements as $key => $element) {
        if($last_category == $element){
        echo "<a class=\"{$key} hw_center lf\"></a>";
        $topClass = false;
    } else { 
        if ($topClass) {
            echo "<a class=\"{$key} hw_top lf\"></a>";
        } else {
            echo "<a class=\"{$key} hw_bottom lf\"></a>";
        }

    }
    }
}
功能打印a($completed\u系统){
$topClass=true;
$elements=数组(“硬件选项卡”=>“硬件”、“软件选项卡”=>“软件”、“pp选项卡”=>“付款”、“服务选项卡”=>“服务”、“ou选项卡”=>“可选”);
$last_category=last_category($completed_system);
foreach($key=>$element形式的元素){
如果($last_category==$element){
回声“;
$topClass=false;
}否则{
如果($topClass){
回声“;
}否则{
回声“;
}
}
}
}

我不完全理解您试图做什么,但如果满足要求,您不能简单地让函数返回true/false,然后将其作为另一个参数添加到下一个函数调用中

问题是,只有条件计算结果为true的项之后的项才会受到影响。您只需使用或即可解决此问题:

$myBool = false;
$myBool = $myBool || print_a("hw-tab", $completed_system, 'hardware', $myBool);
etc..

然后,如果$myBool为true,您将打印hw_bottom,如果为false,您将打印hw_top,函数在true和false之间更改状态的时间,您将打印hw_center。

也许此代码可以帮助您(如果我理解问题):


这是我的$completed_systems数组是的,这正是我所需要的@Dusanthanks….我会更新我的答案,让你看看我的答案…你的答案已经出来了….谢谢
$myBool = false;
$myBool = $myBool || print_a("hw-tab", $completed_system, 'hardware', $myBool);
etc..
<?php
$topClass = true;

$elements = array("hardware", "software", "payment", "service", "optional");
foreach ($elements as $index => $element) {
    if (floor(count($elements) / 2) == $index) {
        echo "<a class=\"{$element} hw_center lf\"></a>";
        $topClass = false;
    } else { 
        if ($topClass) {
            echo "<a class=\"{$element} hw_top lf\"></a>";
        } else {
            echo "<a class=\"{$element} hw_bottom lf\"></a>";
        }

    }
}