从文件创建PHP数组

从文件创建PHP数组,php,arrays,excel,csv,drupal,Php,Arrays,Excel,Csv,Drupal,我正在开发Drupal模块来检查表单的特定字段中是否有允许的值。如果有,用户可以提交表单,如果没有,用户将收到错误消息 下面是我正在使用的代码: my_module_name_form_alter(&$form, &$form_state, $form_id) { if($form_id == 'your_form_id') { // Add one more validation. $form['#validate'][] = '_my_mo

我正在开发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文件中的所有字符串都在单元格的一列中,一列在另一列的下面

我的问题是,我可以从Excel导出.CSV文件,并在上面提到的PHP数组中转换该文件中的值($allowed_values)


每一个关于如何实现这一点的建议都是受欢迎的。

您可以使用array\u map来实现这一点。至少对我有用

$values = array_map('str_getcsv', file('file.csv'));
或者先加载文件:

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

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

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

使用
file\u get\u contents
获取此CSV文件的内容,并使用行分隔符将其分解。发布具体代码片段的CSV文件的确切格式/输出