从文件创建 PHP 数组
Create PHP array from file
我正在开发 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_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 );
我正在开发 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_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 );