Создать массив PHP из файла

0

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

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

  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 для конкретного фрагмента кода
Теги:
csv
excel
arrays
drupal

2 ответа

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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню