php文本文件到数组数组
Posted
技术标签:
【中文标题】php文本文件到数组数组【英文标题】:php text file to array of arrays 【发布时间】:2020-01-06 11:01:52 【问题描述】:我得到了一个包含
的文本文件a b c
a c
b
我想读取文本文件并将其转换为这样的数组数组
array(
array('a', 'b', 'c'),
array('a', 'c'),
array('b'));
我想拆分数组中的每一行以及数组中索引中的每个单词
我试过这段代码,但它只分割数组中的每一行我想要一行数组中的每个单词
$file="140724.txt";
$fopen = fopen($file, r);
$fread = fread($fopen,filesize($file));
fclose($fopen);
$remove = "\n";
$split = explode($remove, $fread);
$array[] = null;
$tab = "\t";
foreach ($split as $string)
$row = explode($tab, $string);
array_push($array,$row);
echo "<pre>";
print_r($array);
echo "</pre>";
我得到了这个结果
Array
(
[0] =>
[1] => Array
(
[0] => a b c
)
[2] => Array
(
[0] => a b
)
[3] => Array
(
[0] => c
))
【问题讨论】:
【参考方案1】:您可以通过使用一些内置函数大大减少代码。
使用带有适当标志的file()
将读取文件,忽略任何空行并返回数据数组。
然后使用array_map()
和explode()
处理这个数组并将其拆分为每行的各个部分...
$fileName = "140724.txt";
$file = file($fileName, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES );
$output = array_map(function($line) return explode("\t", $line); , $file);
会产生
Array
(
[0] => Array
(
[0] => a
[1] => b
[2] => c
)
[1] => Array
(
[0] => a
[1] => c
)
[2] => Array
(
[0] => b
)
)
【讨论】:
【参考方案2】:这样试试。
$file="140724.txt";
$fopen = fopen($file, r);
$fread = fread($fopen,filesize($file));
fclose($fopen);
$remove = "\n";
$split = explode($remove, $fread);
$array = array();
$tab = " ";
foreach ($split as $string)
$array[] = explode($tab, $string);
echo "<pre>";
print_r($array);
echo "</pre>";
希望对您有所帮助。
【讨论】:
此代码可能有效,但不能解释 OP 代码中的问题...【参考方案3】:有几个错误。
首先 - 将 $array
变量初始化为 $array = [];
而不是 $array[] = null;
。
其次,你可以使用fgetcsv,这样会更好。
最后,我认为分隔符是(空格)而不是
\t
。
考虑:
$handle = fopen($file, "r");
while (($data = fgetcsv($handle, 1000, " ")) !== FALSE)
$arr[] = $data;
【讨论】:
【参考方案4】:$fileData = file('1.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$result = [];
foreach ($fileData as $row)
$splitRow = str_getcsv($row, ' ');
$result[] = $splitRow;
echo '<pre>';
print_r($result);
$fileData = file('1.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$result = array_map(function ($row)
return str_getcsv($row, ' ');
, $fileData);
echo '<pre>';
print_r($result);
【讨论】:
请在您的代码中添加一些解释,以便其他人可以从中学习【参考方案5】:这将在没有空白数组的情况下提供完美的输出。稍后谢谢。
$file="140724.txt";
$fopen = fopen($file, 'r');
$fread = fread($fopen,filesize($file));
fclose($fopen);
$remove = "\n";
$split = explode($remove, $fread);
$custom_array = array();
$x = 0;
foreach ($split as $value)
$value = trim($value);
if($value != '' || $value != null)
$inside_explode = explode(" ", $value);
$custom_array[$x] = $inside_explode;
$x++;
print_r($custom_array);
【讨论】:
此代码可能有效,但不能解释 OP 代码中的问题...以上是关于php文本文件到数组数组的主要内容,如果未能解决你的问题,请参考以下文章