当in_array
函数为true时,我需要选中复选框。循环正常但它检查所有复选框bool是真还是假。
$ pixArr
Array(
[12] => Array
(
[imgFile] => IMG_7516.JPG
[imgTime] => 11:39
)
[13] => Array
(
[imgFile] => IMG_7515.JPG
[imgTime] => 11:39
)
)
$ DTIME
Array(
[0] => 11-26-50
[1] => 11-26-50
[2] => 11-39-43
[3] => 11-39-43
[4] => 14-35-38
)
$ FTIME = 50年11月26日
foreach($pixArr as $key=>$val){
if(in_array($fTime,$dTime)){
echo "<input type=\"checkbox\" name=\"file[]\" value=\"$val[imgFile]\" checked/> Select</label>";
}else{
echo "<input type=\"checkbox\" name=\"file[]\" value=\"$val[imgFile]\"/> Select</label>";
}
}
我希望检查时间11-26-50
的输入。因为结果是in_array
为真。但它会检查循环中的每个输入。我不明白为什么。
答案 0 :(得分:1)
这是您需要检查的问题
foreach($dTime as $key=>$val)
{
if($fTime == $val)
{
echo "<input type=\"checkbox\" name=\"file[]\" value=\"$val[imgFile]\" checked/> Select</label>";
}
else
{
echo "<input type=\"checkbox\" name=\"file[]\" value=\"$val[imgFile]\"/> Select</label>";
}
}
答案 1 :(得分:1)
比较时间&#39;值作为字符串应该以相同的格式:
$dTime = [
0 => '11-26-50',
1 => '11-26-50',
2 => '11-39-43',
3 => '11-39-43',
4 => '14-35-38'
];
$dTimeFormatted = array_map(function($v){
return substr(str_replace("-",":",$v), 0, 5);
}, $dTime);
foreach ($pixArr as $key => $val) {
$inTime = in_array($val['imgTime'], $dTimeFormatted);
echo "<input type=\"checkbox\" name=\"file[]\" value=\"{$val['imgFile']}\" ".(($inTime)? '"checked"':" " )."/> Select</label>";
}
答案 2 :(得分:0)
您需要在foreach循环中更改$fTime
。如果没有,那么您只需要遍历完整$pixArr
,因为in_array($fTime,$dTime)
始终为true
。
foreach($pixArr as $key=>$val){
if(in_array($fTime,$dTime)){
echo "<input type=\"checkbox\" name=\"file[]\" value=\"$val[imgFile]\" checked/> Select</label>";
}else{
echo "<input type=\"checkbox\" name=\"file[]\" value=\"$val[imgFile]\"/> Select</label>";
}
$fTime = //update fTime here
}
答案 3 :(得分:0)
我现在知道了。因为in_array
中的比较值与循环无关。我无法将$fTime
与$dTime
进行比较。我必须将$val[imgTime]
与$dTime
以相同的格式进行比较。
这是重点。
现在 $ dTime 格式为HH-mm-ss
,而 $ val [imgTime] 为HH:mm:ss
。
我必须将它们更改为相同的格式。所以我决定改变 $ val [imgTime] 。
$vTime=str_replace(":","-",$val['imgTime']);
所以,最后的脚本是:
foreach($pixArr as $key=>$val){
$vTime=str_replace(":","-",$val['imgTime']);
if(in_array($vTime,$dTime)){
echo "<input type=\"checkbox\" name=\"file[]\" value=\"$val[imgFile]\" checked/> Select</label>";
}else{
echo "<input type=\"checkbox\" name=\"file[]\" value=\"$val[imgFile]\"/> Select</label>";
}
感谢来自@codeHeart,@ frank和每个答案的线索。