2015-02-17 5 views
0

Я разрабатываю модуль Drupal, чтобы проверить, разрешено ли значение в конкретном поле формы. Если есть, пользователь может отправить форму, если пользователь не получил сообщение об ошибке.Создать массив PHP из файла

Существует код, я использую:

my_module_name_form_alter(&$form, &$form_state, $form_id) { 
    if($form_id == 'your_form_id') { 
     // Add one more validation. 
     $form['#validate'][] = '_my_module_name_custom_form_valition'; 
    } 
    } 

    function _my_module_name_custom_form_valition($form, $form_state) { 
    // $form_state holds value for submitted fields. 
    if(!in_array($allowed_values,$form_state['values']['your_form_field']) { 
     form_set_error('your_form_field',t('Entered value is not allowed.')); 
    } 
    } 

Мне нужно добавить переменную «$ allowed_values» в этом коде, который является массивом. Проблема в том, что у меня должно быть 1500 строк в этом массиве, и у меня есть все эти строки в файле Excel в одном столбце в ячейках один ниже другого.

Мой вопрос: могу ли я экспортировать файл .CSV из Excel и преобразовать значения из этого файла в массив PHP, о котором я упоминал выше ($ allowed_values)?

Каждое предложение, как достичь этого, приветствуется.

+0

Извлеките содержимое этого CSV-файла с помощью 'file_get_contents' и' explode', используя разделитель строк. Отправьте точный формат/вывод CSV-файла для конкретного фрагмента кода – serjoscha

ответ

0

PHP имеет функцию fgetcsv, которая может быть использована для чтения строк из файла CSV. Итак, вы можете сделать что-то вроде:

$allowed_values = array(); 
if (($handle = fopen("data.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     // $data now contains a row of values from the CSV file 
     // Add to $allowed_values 
    } 
} 
fclose($handle); 
0

вы можете использовать для этого массив array_map. По крайней мере, работал для меня.

$values = array_map('str_getcsv', file('file.csv')); 

попеременно сначала загрузить файл:

$file = file_get_contents("file.csv"); 

$values = array_map('str_getcsv', $file); 
Смежные вопросы