我打算从一个名为itest.txt
的文本文件中提取内容,该文件包含10万个数字,每行一个数字。
我打印了恰好是$contents
类型的string
内容,所以所有数字都用空格分隔。
使用explode()
后,我假设$ints
每个索引包含一个数字,但事实并非如此。我试图每个索引有一个数字,$ints[0]
=第一个数字,依此类推。后来我希望将它们转换为整数,但我似乎无法通过字符串数组问题。结果我得到了未定义的偏移误差。
如果我的问题不明确,请回复我,我对for循环中的代码有点担心,看起来不太专业。
这是我的代码:
$filename = 'C:\xampp\htdocs\coInv\itest.txt';
$fd = fopen($filename, "r");
$contents = fread($fd, filesize($filename));
$ints = explode(" ", $contents);
echo $ints[0]; // displays all the elements of the string.
for( $i=0 ; $i<100000 ; )
{
$ints[$i] = int($ints[$i]);
echo $ints[$i++];
}
答案 0 :(得分:3)
你必须通过换行符而不是空格来爆炸,以匹配你的输入:
$ints = explode("\n",$contents);
答案 1 :(得分:2)
由于您只获得了包含整个文件的单个数组元素,这意味着您在explode()调用中的" "
是错误的 - 其中没有可用于爆炸的空格。你说它是“一个人”,所以我建议使用"\n"
是爆炸参数。但是,这取决于究竟是什么类型的文本文件:windows,mac,unix。你可能需要稍微玩一下。
但是,由于您只是加载文件,因此您可以跳过整个fopen / fread业务,并执行以下操作:
$lines = file('ivtest.txt');
foreach ($lines as $line) {
echo $line;
}
file()加载文件并自动将行拆分为数组。
答案 2 :(得分:0)
要从文件中获取所有整数值(每行一个整数)到数组中,您应该使用file
函数,然后将每一行映射到it's integer value:
$filename = 'C:\xampp\htdocs\coInv\itest.txt';
$ints = array_map('intval', file($filename));