我有一个包含一个txt文件:PHP:拆分数组值键和值
1:2
2:5
3:10
4:1
我需要能够添加到这些数字。例如我想添加到最后一行+5:
1:2
2:5
3:10
4:6
我该如何做到这一点?我想知道是否正确的方法是将文件输入到数组中,但我不知道如何做到这一点,因为我需要将数字分隔为键和值,我猜?
我有一个包含一个txt文件:PHP:拆分数组值键和值
1:2
2:5
3:10
4:1
我需要能够添加到这些数字。例如我想添加到最后一行+5:
1:2
2:5
3:10
4:6
我该如何做到这一点?我想知道是否正确的方法是将文件输入到数组中,但我不知道如何做到这一点,因为我需要将数字分隔为键和值,我猜?
所描述的问题很普通,但我可以做一些假设来帮助你。
最初的txt文件基本上是一个键值店:
1:2
2:5
3:10
4:1
假设第一个数字是关键,你应该告诉你的算法与密钥n
执行+x
总和行。
在(未经测试&未优化)PHP代码:
function addToStore($destKey, $numberToSum) {
$newStore = [];
foreach(file('store.txt') as $line) {
list($key, $value) = explode(':', $line);
if($key === $destKey) {
$value += $numberToSum;
}
newStore[] = "$key:$value";
}
file_put_contents('store.txt', implode("\n", $newStore));
}
然后称其为:
addToStore('4', '5');
感谢大家的帮助。所有这些都很有帮助,但是这是最容易理解的,并且通过遵循这个答案得到了它的工作。谢谢! – korops
事情是这样的:
// get from file
$file = file('file.txt');
$array = [];
foreach ($file as $line) {
list($column1, $column2) = explode(':', $line);
$array[(int) $column1] = (int) $column2;
}
// add number
$array[4] += 5;
// save to file
$content = '';
foreach ($array as $column1 => $column2) {
$content .= $column1 . ":" . $column2 . "\n";
}
file_put_contents('file.txt', $content);
但是,你必须确保在第一列指标将是独一无二的,因为否则有些行会被跳过(实际上覆盖)。
是的,你可以号码添加到它,当你拥有了它在阵列形式,你可以将您的文本文件数据保存在以下所示的键/值形式中。
$ file_array = array();
$ myfile = fopen(“yourtextfile.txt”,“r”)或 die(“Unable to open file!”);
//读取一行直到结束文件
而{
$行=与fgets($ MYFILE)(FEOF($ MYFILE)!);$ line_array = explode(“:”,$ line); //分割每一行以制作数组
$ file_array [$ line_array [0]] = $ line_array [1];
}
fclose($ myfile); // file_array应该将文件数据显示到数组中
print_r($ file_array);
希望这可以帮助你!
通常你至少试一试。然后你告诉我们,我们建议修复或重大改进。 SO不是免费的编码站点 – RiggsFolly
按行读取文件,按':'分解并构建新的数组。 – Jeff
请阅读[问]和[mcve]让你开始 –