【问题标题】:PHP adding the value 1 to a position in an arrayPHP将值1添加到数组中的位置
【发布时间】:2014-01-14 21:01:24
【问题描述】:

我有一个“你是什么性格”的测验网站,该网站是用 PHP 构建的,用于作业。我还需要存储有多少人获得了 5 个可能的字符中的每一个。

我有一个只有文本的文本文件 - 0 0 0 0 0 每个 0 是一个计数器,用于计算某人选择特定角色的次数。

我把它分解成一个数组

$txt = "results2.txt";
$scores = file_get_contents($txt);
$editablescores = explode(",", $scores);

然后根据某人收到的分数,我想将 +1 添加到数组中适当的 0。

这是我正在使用的示例,但它不起作用。出现以下错误。注意:未定义的偏移量:4 in /Users/sinclaa3/Sites/PHPStyles/hi.php on line 53

0 0 0 0 0 被显示,但随后 1 被添加到它上面。 0 0 0 0 0 1

if ($score < 6 ) {

$editablescores[0]++;
    //0 denotes the position in the array that I want to add one to

};



$storablescores = implode(",", $editablescores);
file_put_contents($txt, $storablescores);

【问题讨论】:

  • "用 PHP 构建的用于作业的网站" 所以你要求我们为你做功课?
  • 您可以使用数据库而不是文本文件吗?这应该会大大简化事情。
  • “不起作用”是什么意思?“不起作用”不足以让我们理解问题。当你尝试它时发生了什么?你收到错误信息了吗?你得到不正确的结果吗?您得到 no 结果了吗?如果结果不正确,是什么导致它们不正确?你期待什么?你得到任何正确的结果了吗?如果是这样,它们是什么?不要让我们猜测。
  • @PatrickQ:用户寻求家庭作业帮助并没有错。
  • 好吧,它一次可以为 1 个用户工作,但是如果没有锁定,它非常容易受到竞争条件的影响。添加锁定(并遭受将导致的等待),或使用其他存储选项:数据库(sqlite 似乎是一个选项)、memcached 等,以及可能为您修复锁定和原子操作的其他存储选项。

标签: php arrays add storing-data


【解决方案1】:

您的explode 错误;你说你有0 0 0 0 0,然后你尝试在,上爆炸。固定:

$editablescores = explode(" ", $scores);

请注意,您的implode 出于同样的原因是错误的;应该是:

$storablescores = implode(" ", $editablescores);

【讨论】:

  • 实际上他也在"," 内爆,所以0 0 0 0 0 很可能是错误的。
  • 是的,这似乎0 0 0 0 0的输入文本错误,应该是0,0,0,0,0
  • 除非原始文件是用空格而不是逗号手工创建的。在这种情况下,这个答案是正确的,它也会说明为什么它从来没有奏效。
  • 原始文件是手工创建的
  • @user3195675 是否手工创建无关紧要;数字之间的区别很重要。如果是空格,那么我的答案可以解决您的问题。如果是标签,则使用"\t" 而不是" "。如果它真的是逗号分隔的,那么就会发生其他事情。
猜你喜欢
  • 2014-10-17
  • 2015-09-03
  • 1970-01-01
  • 2016-03-28
  • 2014-02-15
  • 1970-01-01
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多