Как проверить, равны ли две строки?

Мне нужна помощь с моим кодом, у меня проблема с проверкой двух разных строк, так как я хочу проверить, находится ли строка в переменной $program_times равны PM а также $next_program_times равны AM, Когда я попробую, он ничего не покажет и ничего не сделает.

Когда я попробовал это:

if(strpos($program_times, 'PM') !== false && strpos($next_program_times, 'AM') !== false)
{
echo 'hello 4';
}

И я также попробовал это:

if (strpos($next_program_times, 'AM') !== false)
{
echo 'hello 3';
}

Вот полный код:

for ($jj = 1; $jj <= 113; $jj++)
{
$program_title = $html->find("li[id=row$ii-$jj]", 0)->plaintext; // with this
$program_title = preg_split("/ {6,}/",$program_title);
$program_times = $program_title[1];

if (!empty($program_titles))
{
$program_times = (new Datetime($program_times))->add(new DateInterval('PT5H'))->format('g:i A');
echo '<span id="time', $show_id, '">', $program_times, '</span> ', '<span id="title', $show_id, '">', $program_titles, $program_bbf, $program_cat, '</span> <br></br>';

$next_program_times = $program_times + 1;

if (strpos($next_program_times, 'AM') !== false)
{
echo 'hello 3';
}


if(strpos($program_times, 'PM') !== false && strpos($next_program_times, 'AM') !== false)
{
echo 'hello 4';
}

Вот вывод:

10:00 PM Reba - To Tell the Truth

10:30 PM Reba - Brock's Mulligan

11:00 PM Job or No Job - Chicago Restaurants

12:00 AM Bruce Almighty

2:00 AM 17 Again

4:00 AM The 700 Club

5:00 AM Beetlejuice

7:00 AM Sexy in 3 Weeks!

7:30 AM Paid Programming

8:00 AM The 700 Club

Можете ли вы показать мне пример того, как я могу проверить строки между PM а также AM прежде чем я мог что-то сделать?

0

Решение

Ваша проблема в основной логике вашего кода. Вы извлекаете из этого:

12:00 Брюс Всемогущий

первая часть строки, и вы пытаетесь проверить, содержит ли она «AM» или «PM». Поскольку вы извлекаете время, вы можете преобразовать его в объект php даты вместо того, чтобы обрабатывать его как строку. Таким образом, вы также получите, если $next_program_times находится в промежутке времени AM или PM.
Когда вы пытаетесь добавить +1 к «12:00», вы не получаете «1:00 PM»!
Так что я бы пошел конвертировать строки в объект даты следующим образом:

$program_times = strtotime($program_times);
$refer_time = strtotime('01:00 PM');
if($program_times<$refer_time){
//we are in the AM range
}else{
//we are in the PM range
}

это при условии, что вы рассматриваете только 24-часовой диапазон, так что все оцениваемое время относится к одному и тому же дню.
Для $next_program_times Я бы тоже так поступил с другим подходом:

$next_program_times = strtotime($program_times)+3600;

и тогда вы можете пойти снова с тем же, если:

if($next_program_times<$refer_time){
//we are in the AM range
}else{
//we are in the PM range
}

Обратите внимание, что я не очень знаком с меридианным представлением времени (AM / PM), поэтому, возможно, я не использую самое первое значение PM в $refer_time значение.

Вы можете узнать больше о функции php strtotime Вот.

1

Другие решения

Для сравнения вы можете написать:

if ($program_times == "PM")

Также strpos возвращает позицию первого вхождения строки, а не логическое значение

-1

По вопросам рекламы [email protected]