【问题标题】:foreach loop to only echo results that are greater than 0foreach 循环仅回显大于 0 的结果
【发布时间】:2017-10-16 01:12:21
【问题描述】:

我有一个文本字段列表,旁边是每个文本字段的下拉列表。

文本字段是员工姓名,下拉列表是数字 1-8。

下拉菜单的默认值为 0。

我只想在数字大于 0 的情况下将姓名和数字插入数据库,因为我不需要存储工作小时数为 0 的员工。

我尝试过这样的事情,但没有任何乐趣:

foreach($_POST['ot_hours'] as $hours) {

            if($hours > 1) {

                foreach($_POST['employee_id'] as $employee) {

                echo $employee . " " . $hours;
                }
            }
        }

在尝试插入数据库之前,我只是想回显结果。我只选择了 2 名员工的工作时间,但我得到了这个..

61 424 464 413 417 475 477 480 442 454 431 483 421 436 467 478 429 435 415 420 432 456 451 419 447 458 479 434 463 433 449 441 460 465 428 474 414 446 482 440 426 427 439 443 462 445 418 453 455 468 481 425 430 416 422 438 471 452 423 450 444 469 437 470 466 459 472 473 448 476 461 824 864 813 817 875 877 880 842 854 831 883 821 836 867 878 829 835 815 820 832 856 851 819 847 858 879 834 863 833 849 841 860 865 828 874 814 846 882 840 826 827 839 843 862 845 818 853 855 868 881 825 830 816 822 838 871 852 823 850 844 869 837 870 866 859 872 873 848 876 8

这显然是不正确的。

<div class="form-group">
            <select class="form-control" tabindex="1" name="ot_hours[]">
                <option value="0">0</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
                <option value="9">9</option>
                <option value="10">10</option>
                <option value="11">11</option>
                <option value="12">12</option>
            </select>
        </div>

<div class="form-group">
    <input type="text" class="form-control" name="employee" value="{$last_name}, {$first_name}" disabled>
    <input type="hidden" name="employee_id[]" value="{$id}">
</div>

【问题讨论】:

  • print_r($_POST['ot_hours']) 显示什么,在这种情况下,您真的应该让员工 foreach 成为外部人员
  • 数组 ( [0] => 0 [1] => 0 [2] => 0 [3] => 0 [4] => 0 [5] => 0 [6] = > 0 [7] => 0 [8] => 0 [9] => 0 [10] => 0 [11] => 0 [12] => 0 [13] => 0 [14] => 0 [15] => 0 ,还有更多
  • 您必须了解“选定”的含义。检查传入的数据。
  • @j08691,这在我的代码编辑器中给了我一个解析错误。
  • 我们可能需要查看此表单的 HTML 才能帮助解决此问题

标签: php


【解决方案1】:

是的,因此您需要使用其中一个数组来控制循环,但还要捕获其索引以在另一个数组上使用。

foreach($_POST['employee_id'] as $idx => $employee) {
    if($_POST['ot_hours'][$idx] > 1) {
        echo $employee . " " . $_POST['ot_hours'][$idx] . '<br>';
    }
}

【讨论】:

    猜你喜欢
    • 2014-10-26
    • 2017-03-10
    • 2020-05-06
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多