我在此链接中继续提出这个问题: 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循环中发生这种情况。我完全迷失了。您的建议将受到高度赞赏。
亲切的问候。
答案 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表示选择