【发布时间】:2014-06-12 12:29:51
【问题描述】:
我是 Codeigniter 的新手,并创建了一个表单来输入用户的网站列表,用户可以在其中将网站 URL 插入由行分隔的文本区域或上传包含名为网站的标题的 csv 文件。我正在使用 codeigniter 库 CSVReader 从 csv 读取数据并创建一个这样的数组:
Array ( [0] => Array ( [websites] => www.google.com ) [1] => Array ( [websites] => www.bing.com ) )
如果我尝试从 PHP 爆炸函数转换数组(如果用户通过 textarea 输入网站)数组看起来像这样:
Array(www.google.com,www.bing.com)
我的 CSVReader 的代码如下:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class CSVReader {
var $fields; /** columns names retrieved after parsing */
var $separator = ';'; /** separator used to explode each line */
var $enclosure = '"'; /** enclosure used to decorate each field */
var $max_row_size = 4096; /** maximum row size to be used for decoding */
/**
* Parse a file containing CSV formatted data.
*
* @access public
* @param string
* @param boolean
* @return array
*/
function parse_file($p_Filepath, $p_NamedFields = true) {
$content = false;
$file = fopen($p_Filepath, 'r');
if($p_NamedFields) {
$this->fields = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure);
}
while( ($row = fgetcsv($file, $this->max_row_size, $this->separator, $this->enclosure)) != false ) {
if( $row[0] != null ) { // skip empty lines
if( !$content ) {
$content = array();
}
if( $p_NamedFields ) {
$items = array();
// I prefer to fill the array with values of defined fields
foreach( $this->fields as $id => $field ) {
if( isset($row[$id]) ) {
$items[$field] = $row[$id];
}
}
$content[] = $items;
} else {
$content[] = $row;
}
}
}
fclose($file);
return $content;
}
}
有人可以帮我创建相同样式的数组吗?
【问题讨论】:
-
你是什么意思“相同样式的数组”?你能举一个所需输出数组的例子吗?不确定您的问题中是否提到了这一点。
-
有 2 个输入选项,用户可以选择任何 CSV 文件上传或 Textarea,我的问题是,我想从两个输入创建一个数组,并且数组结构应该相同。例如 Array('website1','website2');
标签: php codeigniter