我有一个PHP / MySQL请求返回数据(即:调用" my_request")。 我取得了结果,我遇到了麻烦...... 对于每个结果,我需要检查该值是否也在硬编码数组中(即:调用my_array")。 我得到了预期的结果,但它回应了两次。
我应该: - 我的请求 - while /循环结果 - 如果数据在my_array中,则回显1 - 如果my_array
中的数据不,则回显0所以:00110000
我得到:0010000000010000
在这里和那里搜索后,我试过: - 存储结果/结束查询循环/然后遍历数组:无结果
这是一段代码:
$my_array = array('Monday' => array('9:00','10:00','11:00','12:00','14:00','15:00','16:00','17:00'), 'Tuesday' => array('9:00','10:00','11:00','12:00','14:00','15:00','16:00','17:00') /* and so on 'til saturday */ );
$query = " SELECT date, start FROM table WHERE id=2 AND date='2016-12-08' ORDER BY start ";
$resultats = $conn->query($query) or die ("Error :" . mysql_error());
while ($hours = mysqli_fetch_assoc($resultats))
{
extract($hours);
echo" ( $date / $start ) "; /* results are ok , let's say I have 2 resultst ie: 9:00 and 10:00 */
foreach ($my_array as $hour) {
if( $hour == $start ) { echo"done"; } else { "fail"; }
}
}
这是我得到双倍结果的地方!并且无法找到我做错的地方...... 我是否必须返回存储请求的结果,然后将其用于数组循环?但是怎么样?还是其他什么? 任何线索?感谢
答案 0 :(得分:0)
我找到了While and for loop not working 我设法绕过答案(由瓦迪姆)制作我自己现在正在工作的东西^^,所以如果它可以对某人有任何帮助...
/* query used below has been prepared at the beginning of the script */
$not_available_hours = array();
$myday = $specialHours[$theday];
$results = $stmt1->execute();
$stmt1->bind_result($date, $start);
$stmt1->store_result();
if ($stmt1->num_rows > 0) {
while($stmt1->fetch()){
$start = strtotime($start);
$debut = date("G:i", $start);
$not_available_hours[] = $debut;
}
foreach ($myday as $hour) {
if (in_array($hour, $not_available_hours)) {
$finish = strtotime($hour) + 3600;
$fin = date("G:i", $finish);
echo"already booked !"; /* grey line */
} else {
$finish = strtotime($hour) + 3600;
$fin = date("G:i", $finish);
echo"get it !"; /* available -> green line */
}
}