Php 从文件读取并创建关联数组?

Php 从文件读取并创建关联数组?,php,arrays,text-files,associative-array,Php,Arrays,Text Files,Associative Array,我可以从文件中读取并创建数组,但是出现以下错误:注意:未定义的偏移量:1。在我的数组中有一个元素是空的,我不明白为什么它是空的 我的文本文件的格式如下: #灭绝:0,美国ABC家族[]http://localhost/IpInfo/index.html #F:0,CBC[]http://localhost/IpInfo/index1.html #F:0,A&E[]http://localhost/IpInfo/index2.html 这是我的密码: $fh = fopen('file1.t

我可以从文件中读取并创建数组,但是出现以下错误:注意:未定义的偏移量:1。在我的数组中有一个元素是空的,我不明白为什么它是空的

我的文本文件的格式如下:

#灭绝:0,美国ABC家族[]http://localhost/IpInfo/index.html  
#F:0,CBC[]http://localhost/IpInfo/index1.html
#F:0,A&E[]http://localhost/IpInfo/index2.html
这是我的密码:

$fh = fopen('file1.txt', 'r');
$theData = fread($fh, filesize('file1.txt'));
$arr = array();
$my_array = explode("\r\n", $theData);

foreach($my_array as $line){
    $tmp = explode("[]", $line);
    $arr[$tmp[0]] = $tmp[1];
}
fclose($fh);

echo '<pre>';
echo print_r($arr);
$fh=fopen('file1.txt','r');
$theData=fread($fh,filesize('file1.txt');
$arr=array();
$my\u array=explode(“\r\n”,$theData);
foreach($my_数组作为$line){
$tmp=分解(“[]”,$line);
$arr[$tmp[0]]=$tmp[1];
}
fclose($fh);
回声';
回声打印(arr);
我不太确定是什么问题?任何帮助都将不胜感激


谢谢

您的输入数据可能没有使用
\r\n
作为行分隔符?我不确定我是否完全解决了这个问题。此外,您可能还需要考虑空行

我将使用
file()
函数,它简化了对文件行的迭代,可以处理Windows和Unix换行,并检查空行:

$my_array = explode("\r\n", $theData);
array_pop($my_array);
$arr=array();
foreach(文件('a.txt')为$line){
//从$line开始,我在这里使用'trim()'
//仍将包含换行分隔符
$line=修剪($line);
//跳过空行
if(空($行){
继续;
}
$tmp=分解(“[]”,$line);
$arr[$tmp[0]]=修剪($tmp[1]);
}
回声';
印刷费($arr);
输出:

数组
(
[#灭绝:0,ABC家庭美国]=>http://localhost/IpInfo/index.html
[#灭绝:0,CBC]=>http://localhost/IpInfo/index1.html
[#灭绝:0,A&E]=>http://localhost/IpInfo/index2.html
)

可能您的输入数据没有使用
\r\n
作为行分隔符?我不确定是否完全解决了问题。此外,您可能需要考虑空行

我将使用
file()
函数,它简化了对文件行的迭代,可以处理Windows和Unix换行,并检查空行:

$my_array = explode("\r\n", $theData);
array_pop($my_array);
$arr=array();
foreach(文件('a.txt')为$line){
//从$line开始,我在这里使用'trim()'
//仍将包含换行分隔符
$line=修剪($line);
//跳过空行
if(空($行){
继续;
}
$tmp=分解(“[]”,$line);
$arr[$tmp[0]]=修剪($tmp[1]);
}
回声';
印刷费($arr);
输出:

数组
(
[#灭绝:0,ABC家庭美国]=>http://localhost/IpInfo/index.html
[#灭绝:0,CBC]=>http://localhost/IpInfo/index1.html
[#灭绝:0,A&E]=>http://localhost/IpInfo/index2.html
)

可能您的输入数据没有使用
\r\n
作为行分隔符?我不确定是否完全解决了问题。此外,您可能需要考虑空行

我将使用
file()
函数,它简化了对文件行的迭代,可以处理Windows和Unix换行,并检查空行:

$my_array = explode("\r\n", $theData);
array_pop($my_array);
$arr=array();
foreach(文件('a.txt')为$line){
//从$line开始,我在这里使用'trim()'
//仍将包含换行分隔符
$line=修剪($line);
//跳过空行
if(空($行){
继续;
}
$tmp=分解(“[]”,$line);
$arr[$tmp[0]]=修剪($tmp[1]);
}
回声';
印刷费($arr);
输出:

数组
(
[#灭绝:0,ABC家庭美国]=>http://localhost/IpInfo/index.html
[#灭绝:0,CBC]=>http://localhost/IpInfo/index1.html
[#灭绝:0,A&E]=>http://localhost/IpInfo/index2.html
)

可能您的输入数据没有使用
\r\n
作为行分隔符?我不确定是否完全解决了问题。此外,您可能需要考虑空行

我将使用
file()
函数,它简化了对文件行的迭代,可以处理Windows和Unix换行,并检查空行:

$my_array = explode("\r\n", $theData);
array_pop($my_array);
$arr=array();
foreach(文件('a.txt')为$line){
//从$line开始,我在这里使用'trim()'
//仍将包含换行分隔符
$line=修剪($line);
//跳过空行
if(空($行){
继续;
}
$tmp=分解(“[]”,$line);
$arr[$tmp[0]]=修剪($tmp[1]);
}
回声';
印刷费($arr);
输出:

数组
(
[#灭绝:0,ABC家庭美国]=>http://localhost/IpInfo/index.html
[#灭绝:0,CBC]=>http://localhost/IpInfo/index1.html
[#灭绝:0,A&E]=>http://localhost/IpInfo/index2.html
)

原因是explode函数在“\r\n”处拆分读入的数据。最后一行后面有一行新行,这就是导致最后一个“数组”没有键或值的原因。若要解决此问题,请将此行替换为:
$my_array=explode(\r\n“,$theData);


原因是explode函数在“\r\n”处拆分读入的数据。最后一行后面有一个新行,这就是导致最后一个“数组”没有键或值的原因。若要解决此问题,请将此行替换为:
$my\u array=explode(\r\n“,$theData);


原因是explode函数在“\r\n”处拆分读入的数据。最后一行后面有一个新行,这就是导致最后一个“数组”没有键或值的原因。若要解决此问题,请将此行替换为:
$my\u array=explode(\r\n“,$theData);


原因是explode函数在“\r\n”处拆分读入的数据。最后一行后面有一个新行,这就是导致最后一个“数组”没有键或值的原因。若要解决此问题,请将此行替换为:
$my\u array=explode(\r\n“,$theData);


谢谢,但是我仍然在:$arr[$tmp[0]]=trim($tmp[1])处收到一个错误;与以前相同的错误,未定义偏移量1?@d