2015-02-20 2 views
2

У меня есть javascript ввода даты, который позволяет пользователям добавлять сразу столько дат в базу данных, это использование implode и сохраняет как одну большую строку, например 2015-01-01 2015-01-02 и т. д.Дата в массив с implode и строками

Я также хочу, чтобы это выяснилось, если один из этих дней содержит выходной день. Я не знаю, как с этим связаны параметры строки и даты.

$week_end_check = array();  

$week_end_check = implode(' ',date('D'), strtotime($_POST['dates'])); 

    if ((strpos($week_end_check,'Sun')) || (strpos($week_end_check,'Sat'))) { 
     $weekend = '1'; 
    } 

вышеупомянутую не будет работать, как я знаю, но кто-то может мне помочь ... вы можете понять, что я после того, как на выше я надеюсь.

ответ

2

Вот менее надуманным способ сделать это:

$weekend = false; 
foreach($_POST['dates'] as $date) { 
    $day = (new DateTime($date))->format('D'); 
    if (in_array($day, array('Sun', 'Sat'))) { 
     $weekend = true; 
     break; 
    } 
} 
  1. Установите $weekend в false по умолчанию
  2. Loop через каждую дату
  3. Получите день недели
  4. Проверьте, чтобы увидеть если это «Солнце» или «Сб»
  5. Комплект $weekend до true
  6. Конец цикла, как только мы знаем, что выходной день был найден
+0

спасибо @john Я никогда не видел функцию разрыва до (извините), очень удобная. перерыв спасет мне еще несколько головных болей у меня, спасибо, сэр! – Brobina

1

Пожалуйста, используйте этот пример. ,

$string = "2015-01-01 2015-01-02 2015-01-04 2015-01-06"; 

$array = explode(" ",$string); 

$weekend_array = array(); 

$total = count($array); 

for($i=0;$i<$count;$i++) 
{ 
     $my_day = date("D", strtotime($array[$i])); 

     if($my_day=="Sun" || $my_day=="Sat") 
     { 
       $weekend_array[] = $array[$i]; 
     } 

} 

echo "<pre>"; 
    print_r($weekend_array); 
echo "<pre>"; 
+0

спасибо Анил, вышеупомянутый ответ - это более короткий способ сделать это, но я ценю твою работу для меня тоже, спасибо. – Brobina

+0

Вы всегда приветствуете Оливера :) –

Смежные вопросы