У меня есть массивы и данные из базы данных, и их нужно сравнивать.
$mydays = array( 'Monday' => array('10:00','11:00','12:00','15:00','16:00','17:00','18:00'), 'Tuesday' => array('10:00','11:00','12:00','15:00','16:00','17:00','18:00'), 'Wednesday' => array('9:00','10:00','11:00','12:00','14:00','15:00','16:00','17:00','18:00'), 'Thursday' => array('9:00','10:00','11:00','12:00','14:00','15:00','16:00','17:00','18:00'), 'Friday' => array('9:00','10:00','11:00','12:00','14:00','15:00','16:00','17:00','18:00'), 'Saturday' => array('9:00','10:00','11:00','12:00') ); $myhours = array( "2017-02-27" => array("17:00"), "2017-03-01" => array("16:00","17:00","18:00"), "2017-03-03" => array("17:00"), "2017-03-08" => array("17:00","18:00"), "2017-03-10" => array("17:00","18:00") );
Из базы данных я извлекаю некоторые данные, такие как:
$thisday = Monday $thisdate = yyyy-mm-dd $thishour = H:i $myday = $mydays[$thisday]; foreach ($myday as $hour) { /* loop through hours for this specific day */ // I need to find out if there is a date/hour from "$myhours" that matches my data // ie: I have database:Monday -> I loop through the hours from $mydays:Monday // I then have : 10:00,11:00,12:00,15:00,16:00,17:00,18:00 // from there, I need to know if, in "$myhours", I have the same hour for "$thisdate" }
Я прочитал почти каждый пост здесь, нашел и попытался использовать:
function in_multiarray($elem, $array, $field) { $top = sizeof($array) - 1; $bottom = 0; while($bottom <= $top) { if($array[$bottom][$field] == $elem) { return true; } else { if(is_array($array[$bottom][$field])) { if(in_multiarray_d($elem, ($array[$bottom][$field]))) { return true; } else { return false; } } else { return false; } $bottom++; } } return false; } if( !in_multiarray("$thisdate", $myhours, "$hour") ) { echo"good"; } else { echo"not good"; }
Моя проблема: я не получаю результат каждый раз (даже когда некоторые часовые / часовые совпадения), и когда я это делаю, это не для каждого часа, я пропускаю несколько дней / часов … Я думал, что мне, возможно, придется перезагрузить массив, но не имел лучшего результата.
Q: мой подход – правильный способ обойти мою проблему? Если да, что я делаю неправильно? если нет, то какой вам лучший совет или что мне делать?