【问题标题】:looping through array from user input从用户输入循环遍历数组
【发布时间】:2015-03-20 14:35:56
【问题描述】:

我有一个带有选择字段的表单,其中包含星期几,我已经有一个数组中的天数

$weekdays = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");

我正在使用

填充选择
<select name="weekday">
                    <?php
                    foreach ($weekdays AS $weekday) {
                        PRINT '<option value="' . $weekday . '">' . $weekday . '</option>';
                    }
                    ?>
                </select>

我现在正在尝试创建一个响应页面,它将在所选页面之后的接下来的三天内打印出来,但我不确定如何,我目前只有

$weekdays = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
foreach($weekdays as $value){ 
    echo $value . "<br />\n";

我知道我必须从表单中收集用户输入的值,但我不知道一旦我有了它之后我会做什么

$weekday = $_POST['weekday'];

【问题讨论】:

  • 嗯,我认为最好的方法就是从一些代码开始
  • 显示一些代码你是怎么做的?
  • @Rizier123 这可以通过现在提供的代码修复。他想让$_POST['weekday'] 将其与数组进行比较,然后获取接下来的 3 个结果

标签: php arrays loops


【解决方案1】:

使用array_keys 查找要解析的下一个值的键,并检查是否要将解析重置为星期一:

$receivedDay = 'Saturday';
$weekdays = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");

for ($i = 1; $i < 4; $i++) {
  $key = array_keys($weekdays, $receivedDay);
  $key = $i + $key[0];
  if ($key > 6) {
    $key -= 7;
  }
  echo $weekdays[$key] . PHP_EOL; // Or <br>
}

输出

Sunday
Monday
Tuesday

【讨论】:

  • 谢谢你,这很有帮助,很有意义
  • 我之前想在数组中添加一个额外的星期一和星期二,因为我不确定如何重置它
【解决方案2】:

第一步是将您的选择放入&lt;form&gt;

<form action="request.php">
   <select name="weeks">
         foreach here
   </select>
</form>

将内容放入同一文件夹下的新文件request.php

<?php
    $weekName = $_REQUEST['weekday'];
    // Your logic about $weekName
    echo $weekName;
?>

【讨论】:

    【解决方案3】:

    这应该是你的 php 代码 以这种方式更改前端

    <select name="weekday">
                        <?php
                        foreach ($weekdays AS $weekdayKey=>$weekdayValue) {
                            PRINT '<option value="' . $weekdayKey . '">' . $weekdayValue . '</option>';
                        }
                        ?>
                    </select>
    

    这里 5 代表星期六从前端适当发送索引

     <?php 
        $array = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
        $total = count($array);
        $sel =5;
        for($i=0;$i<3;$i++) {
            $sel = $sel+1;
            if($sel>=$total){
                $sel = $sel-$total;
            }
            $getDays [] = $array[$sel];
         }
         echo "<pre>";
            print_r($getDays);
         echo "</pre>"; 
        ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      相关资源
      最近更新 更多