我已经花了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
)
答案 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));