2016-08-23 2 views
0

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

add_filter('frm_setup_new_fields_vars', 'remove_field_option', 30, 2); 
add_filter('frm_setup_edit_fields_vars', 'remove_field_option', 30, 2); 
function remove_field_option($values, $field) { 
    if ($field->id == 242) { 
    $timestamp = time(); 
    $options_to_remove = array('2016-08-19', '2016-08-20') 
    foreach ($options_to_remove as $remove) { 
     $option_key = array_search($remove, $values['options']); 
     if ($option_key !== false) { 
     unset($values['options'][ $option_key ]); 
     } 
    } 
    } 
    return $values; 
} 
+0

Возможно, вы можете преобразовать значения в массиве с помощью 'strtotime ($ time);' и отключить любые, которые меньше вашего входного значения. – Rasclatt

ответ

0

если вы хотите идти с вашим способом с помощью $ options_remove массиву

$newArray = array_filter($oldArray,function($a) { 
global $options_remove; 
return !in_array($a,$options_remove); 
}); 

или что-то вроде этого

$today = mktime(0, 0, 0, date("m") , date("d"), date("Y")); 
$newArray = array_filter($oldArray,function($a) { 
// your old array assumed to hold the date or datetime as value such as '2016-08-11' or '2016-08-11 08:11:23' 
global $today; 
return strtotime($a) < $today; 
}); 

$ newarray имеет значение времени меньше, чем начало сегодняшнего дня. поэтому до конца вчерашнего дня

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