我有一个文件codes.txt与这样的记录
USA 0233
JPN 6789
TUN 8990
CDN 2345
Run Code Online (Sandbox Code Playgroud)
我想将这些文件内容读取到这样的关联数组中.
$codes["USA"] = 0233;
$codes["JPN"] = 6789;
$codes["TUN"] = 8990;
$codes["CDN"] = 2345;
Run Code Online (Sandbox Code Playgroud)
这是打开文件进行编写的代码.我需要数组部分的帮助.THKS
$myFile = "codes.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh)
Run Code Online (Sandbox Code Playgroud)
这很直接.首先逐行读取文件(例如,参见file已经执行此操作的函数).然后通过在第一个空格处分割它来解析每一行(请参阅参考资料explode),使用第一部分作为键,第二部分作为值:
$array = array();
foreach (file($myFile) as $line)
{
list($key, $value) = explode(' ', $line, 2) + array(NULL, NULL);
if ($value !== NULL)
{
$array[$key] = $value;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您的解析器需要更具体,请根据您的需要进行更改.有很多使用PHP字符串函数可用于更多的差异化分析,像sscanf或正则表达式.
另一种常见方法是扩展SplFileObject,它允许将数据采集封装在迭代器中,这样您就可以更好地区分数据使用位置和数据采集位置.你可以在另一个答案中找到一个例子:
小智 4
$myFile = "codes.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
$assoc_array = array();
$my_array = explode("\n", $theData);
foreach($my_array as $line)
{
$tmp = explode(" ", $line);
$assoc_array[$tmp[0]] = $tmp[1];
}
fclose($fh);
// well the op wants the results to be in $codes
$codes = $assoc_array;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10525 次 |
| 最近记录: |