将从数据库检索的值与数组的现有值进行比较

时间:2016-03-11 17:48:19

标签: php

我在此链接中继续提出这个问题: print values using for loop within foreach loop

我从一个人那里得到了一个非常好的解决方案,解决方法是:

foreach($officeDetails as $key=>$value){ 
      $str = $value['days'];
      $arr = explode(", ", $str);

   /*Output of $arr is :
    Array ( 
    [0] => Monday 
    [1] => Tuesday 
  ) 
 Array ( 
    [0] => Wednesday 
    [1] => Thursday 
    [2] => Friday 
  )
 */

      $daysArr = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
      foreach($daysArr as $i => $days){
            echo $arr[$i]."<br/>";

                if( $daysArr[$i] == $arr[$i] ){
                    echo "Selected ---- ".$days."<br/>";
                }else{
                    echo $days."<br/>";
                    }
              }
        }

现在,问题在于我使用这个

echo $arr[$i]."<br/>";

从$ arr中正确打印所有值&#34;周一周二周三周四周四&#34;但是当我使用if条件比较两个值时:

 if( $daysArr[$i] == $arr[$i] ){

它没有检查第二个数组:

  Array ( 
    [0] => Wednesday 
    [1] => Thursday 
    [2] => Friday 
  )

并显示结果

Monday
Tuesday

这意味着问题发生在if条件不在$ daysArr的foreach循环中。请帮助我为什么在if循环中发生这种情况。我完全迷失了。您的建议将受到高度赞赏。

亲切的问候。

1 个答案:

答案 0 :(得分:0)

我认为你的数组有不同的键/索引。

含义$ daysarr [1] =星期二,但由于你的定义$ arr [1] =星期四然后不是一样的。键需要匹配才能进行比较。

可能的解决方案:

让$ daysarr成为模板,$ arr只是一个是/否。

意思是:

选择星期二和星期六时:

$daysarr: 
0->Monday
1->Tuesday
2->Wednesday
3->Thursday
4->Friday
5->Saturday

$arr:
0->0
1->1
2->0
3->0
4->0
5->1

0表示未选中 1表示选择