2017-07-14 117 views
-3

我有一个包含一个txt文件:PHP:拆分数组值键和值

1:2 
2:5 
3:10 
4:1 

我需要能够添加到这些数字。例如我想添加到最后一行+5:

1:2 
2:5 
3:10 
4:6 

我该如何做到这一点?我想知道是否正确的方法是将文件输入到数组中,但我不知道如何做到这一点,因为我需要将数字分隔为键和值,我猜?

+0

通常你至少试一试。然后你告诉我们,我们建议修复或重大改进。 SO不是免费的编码站点 – RiggsFolly

+2

按行读取文件,按':'分解并构建新的数组。 – Jeff

+0

请阅读[问]和[mcve]让你开始 –

回答

1

所描述的问题很普通,但我可以做一些假设来帮助你。

最初的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'); 
+0

感谢大家的帮助。所有这些都很有帮助,但是这是最容易理解的,并且通过遵循这个答案得到了它的工作。谢谢! – korops

0

事情是这样的:

// 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); 

但是,你必须确保在第一列指标将是独一无二的,因为否则有些行会被跳过(实际上覆盖)。

0

是的,你可以号码添加到它,当你拥有了它在阵列形式,你可以将您的文本文件数据保存在以下所示的键/值形式中。

$ 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);

希望这可以帮助你!