如何在php中从文本文件创建数组内部数组
首先,我有一个文本文件如何在php中从文本文件创建数组内部数组,php,arrays,file,Php,Arrays,File,首先,我有一个文本文件 Samsung|us|new iPhone|china|new 我想转换文本文件,结果必须是这样 [ [ 'Samsung', 'us', 'new' ], [ 'iPhone', 'china', 'new' ] ] 我已经尝试过了,但是代码只返回一个数组 代码: 不要使用文件获取内容打开文件并逐行读取文件。然后把线分开 下面是一些这样做的例子。您可以为此使用fgets。使用file\u获取内容可以获
Samsung|us|new
iPhone|china|new
我想转换文本文件,结果必须是这样
[
[
'Samsung', 'us', 'new'
],
[
'iPhone', 'china', 'new'
]
]
我已经尝试过了,但是代码只返回一个数组
代码:
不要使用
文件获取内容
打开文件并逐行读取文件。然后把线分开
下面是一些这样做的例子。您可以为此使用fgets
。使用file\u获取内容
可以获取整个文件
另一种解决方案是通过\r\n
或\n
新行的字符进行分解。然后你有一行,你可以用你的分隔符把它们分开。但是在这种情况下,您将整个内容写入一个数组,这可能会导致一些内存问题
explode("\n",$homepage)
这是因为
file\u get\u contents()
读取整个文件,包括换行符。
您必须首先在\n
上进行分解()。然后在|
上分解()
或者在一行中使用array\u map()
:
$a = file_get_contents("text.txt");
$b = array_map(fn($line) => explode('|', $line), explode("\n", $a));
// $a with \n
// this explode splits the lines
// this explodes at the | character
例如:
如果您想读取一些大文件,可以使用以下内容:
function getCsvData($file, $delimiter = '|') {
if (($handle = fopen($file, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
yield $data;
}
fclose($handle);
}
}
foreach(getCsvData('test.txt') as $row) {
print_r($row);
}
根据来自的提示,我将执行以下操作:
首先,使用带有标志file\u IGNORE\u NEW\u line的函数读取文件
。这将逐行读取文件并创建一个数组。
下一步是迭代每个元素,并用|
字符分割
这可能是生成的代码:
$file = file('test.txt', FILE_IGNORE_NEW_LINES);
for($i = 0; $i < count($file); $i++)
{
$file[$i] = explode('|', $file[$i]);
}
$file=file('test.txt',file\u IGNORE\u NEW\u行);
对于($i=0;$i
查看(如果您的文件不是太大)。文件()
基本上与文件获取内容()
+手动行拆分相同。
function getCsvData($file, $delimiter = '|') {
if (($handle = fopen($file, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, $delimiter)) !== FALSE) {
yield $data;
}
fclose($handle);
}
}
foreach(getCsvData('test.txt') as $row) {
print_r($row);
}
$file = file('test.txt', FILE_IGNORE_NEW_LINES);
for($i = 0; $i < count($file); $i++)
{
$file[$i] = explode('|', $file[$i]);
}