【问题标题】:How to check if it's the last element in foreach loop如何检查它是否是foreach循环中的最后一个元素
【发布时间】:2018-05-30 11:50:42
【问题描述】:

我有一个获取作业名称的 foreach 循环。在每项工作旁边,我都有一个“完成”按钮。当用户单击完成时,它会从页面隐藏作业。用户可以按任何顺序执行作业,因此他可以先点击,而不是最后点击。

所有作业完成后,我希望用户自动转到下一个选项卡。

我的问题是如何检查这是否是 foreach 循环中的最后一项工作。用户可以按任何顺序隐藏作业;所以我如何确定它是否是最后一份工作而不是转到下一个选项卡。

这里是循环。

foreach ($array2 as $key => $value) { ?>
    <div class="panel panel-default center-block">
        <div class="panel-body">
            <div class=row>
                <div class="col-md-4">
                    <h2 style="color:orangered" class="text-center">SIP</h2>
                    <img alt="" class="center-block"style="width:20%;"src="../../css/collecting/logo.png">
                    <h2 class="text-center"><?php echo $value['name_dvp']; ?></h2>
                    <h3 class="text-center">(<?php echo $value['region_dvp']; ?>)</h3>
                    <h3 class="text-center">D<?php echo $value['id_dvp']; ?></h3>
                    <h2 style="color:orangered" class="text-center"><?php echo $value['maintenancelocation_dvp']; ?></h2>
                </div>


                <div class="col-md-2">
                    <img alt="" class=" center-block developerlocationselection" style="width:35%; margin-top:10%;" src="../../css/collecting/route-select.png">

                </div>
            </div>
        </div>
    </div>
    <?php

}

Javascript

<script>
  $(document).ready(function () {
    $(".developerlocationselection").click( function () {
        alert(2);
    });
  });
</script>

【问题讨论】:

  • 您需要保留所有带有完整标志的作业列表,然后在作业完成后您需要检查您的列表以查看是否所有作业都已完成
  • 这种“隐藏”工作是如何发生的——你在这里谈论的是客户端的事情吗?在这种情况下,你当然会问一个完全错误的问题。您的 foreach 循环在服务器上运行,并且在第一次点击客户端上的任何内容之前就已经是古老的历史了。
  • 隐藏在客户端确实有效。单击完成时,它会隐藏作业。但我的问题是因为可以按任何顺序完成工作;我如何确定他们正在完成最后一份工作。因为在上一份工作中,我希望 javaScript 将用户带到下一个选项卡。

标签: javascript php loops foreach


【解决方案1】:

试试这个:

foreach($array as $key => $value) {

    if ($value === end($array)){
        echo 'Last';
    }

}

【讨论】:

    【解决方案2】:

    我认为更好的选择是遵循@musefan 所说的话。否则你可以尝试这样的事情:

    $array_length = count($array2);
    $current_index = 0;
    
    foreach ($array2 as $key => $value) {
    
       $current_index++;
    
       if(current_index == $array_length){
          echo 'I found the last job!';
       }
    
       //Do your stuff
    }
    

    【讨论】:

    • 在很多层面上都错了。例如:$array2 = ['keyOne' => 'You', 'keyTwo' => 'Are', 'keyThree' => 'Totally', 'keyFour' => 'Wrong'];
    • @Eakethet 你是对的。我把它改成了我原来的答案。 :)
    猜你喜欢
    • 2011-04-02
    • 2017-08-10
    • 2021-08-24
    • 2013-04-15
    • 1970-01-01
    • 2011-09-06
    • 2018-11-03
    • 2019-04-08
    • 1970-01-01
    相关资源
    最近更新 更多