php,键值增加1的问题

时间:2019-05-28 06:55:26

标签: php foreach

我已经花了2天的时间来解决这个问题。我正在尝试创建投票脚本,该脚本读取.txt文件并修改其中的值。我的foreach部分有问题,我尝试在人的投票中添加+1。 1-5是人的ID,在|之后是票数。第一个输出是:

Array
(
[0] => 1|2

[1] => 2|6

[2] => 3|8

[3] => 4|3

[4] => 5|10

,我希望它在最后一个数字中只加+1。但是,如果我尝试使用增量,则会出现错误:“ PHP致命错误:无法增量/减量重载的对象,也无法在...中使用字符串偏移量”。

foreach ($file_contents as &$id) {
  if ($id == 2) {
    $id[2]++;
  }
}

print_r($file_contents);

我仍在学习PHP,这对我来说很奇怪,因为仅给出“ $ id [2] = 8”实际上会修改该值。为什么不能使用++?怎么回事?

Array
(
[0] => 1|2

[1] => 2|8

[2] => 3|8

[3] => 4|3

[4] => 5|10
)

1 个答案:

答案 0 :(得分:1)

改为使用json。这将使您的生活更加轻松。

Json是可以解码为数组的文本字符串。
索引数组或关联数组。在我看来,在这种情况下,联想是首选。

$votes = ["1" => 2, "2" => 6, "3" => 8, "4" => 3, "5" => 10];
// Above is an associative array with the same data as your example. 
// The key is the id and the value is the votes.
// To read it from the file use:
// $votes = json_decode(file_get_contents("file.txt"));

$inputVote = 2; // someone voted on person 2.

if(!isset($votes[$inputVote])) $votes[$inputVote] = 0; // if someone voted on a person not already in the array, add the person to the array. 

$votes[$inputVote]++; // increments the votes on person 2.

file_put_contents("file.txt", json_encode($votes));