PHP:将数组值拆分为键和值
我有一个txt文件,其中包含:PHP:将数组值拆分为键和值,php,arrays,split,Php,Arrays,Split,我有一个txt文件,其中包含: 1:2 2:5 3:10 4:1 我需要能够增加这些数字。例如,我想添加到最后一行+5: 1:2 2:5 3:10 4:6 我怎样才能做到这一点?我想知道是否正确的方法是将文件输入数组,但我不知道如何做,因为我需要将数字分成键和值,我想是这样的: // get from file $file = file('file.txt'); $array = []; foreach ($file as $line) { list($column1, $colum
1:2
2:5
3:10
4:1
我需要能够增加这些数字。例如,我想添加到最后一行+5:
1:2
2:5
3:10
4:6
我怎样才能做到这一点?我想知道是否正确的方法是将文件输入数组,但我不知道如何做,因为我需要将数字分成键和值,我想是这样的:
// 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);
但是,您必须确保第一列中的索引是唯一的,否则会跳过某些行(实际上会被覆盖)。所描述的问题非常普遍,但我可以做一些假设来帮助您 初始txt文件基本上是一个键值存储: 假设第一个数字是键,您应该告诉算法对键为
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');
是的,当您以数组形式保存文本文件时,您可以向其添加数字,并且您可以以键/值形式保存文本文件数据,如下所示 $file_array=array() $myfile=fopen(“yourtextfile.txt”、“r”)或 死亡(“无法打开文件!”) //读一行直到文件结束 而(!feof($myfile)){
$line=fgets($myfile) $line_array=explode(“:”,$line);//拆分每行以生成数组 $file_数组[$line_数组[0]]=$line_数组[1] } fclose($myfile);//文件数组应将文件数据显示到数组中 打印(文件数组)
希望这对你有帮助 通常情况下,你至少可以尝试一下。然后,您向我们展示这一点,我们建议修复或重大改进。因此,这不是一个免费的编码站点。请逐行阅读该文件,按
:
分解并构建新的数组。请阅读并获取您的信息started@RiggsFolly对不起,我不是那个意思。我只是走到了死胡同,找不到任何东西可以让我前进。我知道如何将数字放入数组,但不知道如何将它们分开。再次抱歉,我会在下一个问题中做得更好。谢谢大家的帮助。所有这些都很有帮助,但这是最容易理解的,并且通过遵循这个答案来实现。非常感谢。
addToStore('4', '5');