【问题标题】:How can I match the array values (e.g values from i++) to the keys in arrays如何将数组值(例如来自 i++ 的值)与数组中的键匹配
【发布时间】:2016-08-12 04:50:57
【问题描述】:

`我正在尝试获取此输出。我有一个数据库表,我保存了周一到周日的商店营业时间和关闭时间。我能够在浏览器上获取记录,但我正在尝试根据当天对日期进行排序。如果今天是星期五,则应先显示星期五,然后再显示一周的其余时间。代码是:

<?php

$wdays = array( 0 => "Monday" , 1 => "Tuesday",  2 => "Wednesday", 3 => "Thursday",  4 => "Friday", 5 => "Saturday", 6 => "Sunday");

$times = array(
   0 => date( $row_DetailRS1['monO'] ). " ". date( $row_DetailRS1['monC'] ),
   1 =>  date( $row_DetailRS1['tueO'] ) . " ". date( $row_DetailRS1['tueC'] ),
   2 =>  date( $row_DetailRS1['wedO'] ) . " ". date( $row_DetailRS1['wedC'] ),
   3 =>  date( $row_DetailRS1['thurO'] ) . " ". date( $row_DetailRS1['thurC'] ),
   4 =>  date( $row_DetailRS1['friO'] ) . " ". date( $row_DetailRS1['friC'] ),
   5 =>  date( $row_DetailRS1['satO'] ) . " ". date( $row_DetailRS1['satC'] ),
   6 =>  date( $row_DetailRS1['sunO'] ) . " ". date( $row_DetailRS1['sunC'] ) );

$combine = array_combine($wdays,  $times);

$html = "<table>";
$html .= "<tr><td>Sl.No</td><td>Days</td><td>Business Hours</td></tr>";
$i = 0;

while (true) {
    if ($i === 7) break;

    if ($datetime->format('N') === '7' && $i === 0) {
        $datetime->add(new \DateInterval('P1D'));
        continue;        
    }

    echo  $datetime->format('D') . $listItem[1]   . "<br/>";
    $listItem = array('<li>', '</li>');    

    $datetime->add(new \DateInterval('P1D'));
    $i++;

    echo "Value for i: ".$i. "and the day is: ". $datetime->format('D') . "<br/><br/><br/><br/> " ;

}

foreach ($combine as $wdays =>  $times):

    $html .= "<tr>";
    $html .= "<td>". $datetime->format('D')."</td>";
    $html .= "<td>".$i."</td>";
    $html .= "<td>".$times."</td>";
    $html .= "</tr>";

    $datetime->add(new \DateInterval('P1D'));
    $i++;

endforeach;
$html .= "</table>";
echo $html;

【问题讨论】:

  • 请正确格式化您的代码以使其可读
  • 嗨,Andrew,我希望代码现在可读吗?

标签: php multidimensional-array


【解决方案1】:

我认为你不想在 $combine 上使用 foreach, 你只想要一个这样的循环:(我认为这会起作用):

    for ($i=0;$i<7;$i++)
        $html .= "<tr>";
        $html .= "<td>". $datetime->format('D')."</td>";
        $html .= "<td>".$i."</td>";
        $html .= "<td>".$combine[$i]."</td>";
        $html .= "</tr>";

        $datetime->add(new \DateInterval('P1D'));
    endfor;

【讨论】:

  • 您好,SilicaGel,感谢您的回复,代码正在运行,但无法获取数组中的值。它只返回:- fri 7 但我想要的值是:- Fri 09:00:00 17:00:00 Sat 10:00:00 17:00:00 Sun 11:00:00 16:00: 00 周一 10:00:00 18:00:00 周二 09:00:00 17:00:00 周三 09:00:00 17:00:00 周四 09:00:00 17:00:00
  • 您好,抱歉,使用 for 循环不起作用。我写的时候已经很晚了。您可以尝试复制之前的 while 循环,然后 echo $combine[$datetime->format('N')] (应该使用正确的键)
  • 您好硅胶,很抱歉回复晚了。我仍然无法获得所需的正确方式。它不适合我。你能帮帮我吗?谢谢
【解决方案2】:

我想我已经破解了:)

就这样吧:-

 <?php
  $datetime = new \DateTime();

  $listItem = array('<li class="active">', '</li>');



  $times = array(
    1 => date( $row_DetailRS1['monO'] ). " ". date( $row_DetailRS1['monC'] ),
    2 =>  date( $row_DetailRS1['tueO'] ) . " ". date( $row_DetailRS1['tueC'] ),
    3 =>  date( $row_DetailRS1['wedO'] ) . " ". date( $row_DetailRS1['wedC'] ),
    4 =>  date( $row_DetailRS1['thurO'] ) . " ". date( $row_DetailRS1['thurC'] ),
    5 =>  date( $row_DetailRS1['friO'] ) . " ". date( $row_DetailRS1['friC'] ),
    6 =>  date( $row_DetailRS1['satO'] ) . " ". date( $row_DetailRS1['satC'] ),
    7 =>  date( $row_DetailRS1['sunO'] ) . " ". date( $row_DetailRS1['sunC'] ) );





  $html = "<table>";
  $html .= "<tr> <td>Days</td> <td> </td> <td></td>   <td>Business Hours</td></tr>";
  $i = 1;





  foreach ($times as $key => $value):



    $m = $datetime->format('N');


      $html .= "<tr>";
      $html .= "<td>". $datetime->format('D')."</td>";
      $html .= "<td>". " "."</td>";
      $html .= "<td>". " "."</td>";
      $html .= "<td>".$times[$m]."</td>";
      $html .= "</tr>";

      $datetime->add(new \DateInterval('P1D'));



      $i++;




  endforeach;
  $html .= "</table>";
  echo $html;



 ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 2023-03-06
    • 2016-11-06
    • 1970-01-01
    • 2021-04-30
    • 2014-09-28
    相关资源
    最近更新 更多