PHP:将数组值拆分为键和值

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

我有一个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, $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');