【问题标题】:How can I increment the value of only one index in the array using PHP [closed]如何使用 PHP 增加数组中只有一个索引的值 [关闭]
【发布时间】:2016-05-13 20:01:24
【问题描述】:
$vaccinesArr=array("0","0","0","0","0","0","0","0","0","0","0");    
for($i = 0; $i < 11 ; $i++){
       while($row = mysqli_fetch_assoc($result)){
          if ($row['vaccID']== $i){
               $vaccineArr[$i]++;                 
          }               
       }
    }

这是我的代码的一部分,我需要根据这个条件递增,但我不断收到语法错误,我搜索但我发现的所有结果都使用 foreach 并递增数组的所有索引,而我想要在这里只增加一个特定的索引。有人可以帮忙吗?

【问题讨论】:

  • 您遇到什么语法错误?
  • 您不需要 for 循环。为了什么?!只需获取数据并使用$row["vaccID"] 作为键。任何表达式都可以作为键有效:$array[(expression)] 该表达式将只计算键。所以在你的例子中:$vaccineArr[$row["vaccID"]]
  • 第一行中有$vaccinesArr,但if 中有$vaccineArr。此外,如果您增加值并将它们视为整数,请不要将它们初始化为字符串。
  • 此外,如果您遇到错误,请务必将其包含在您的问题中!我在这里根据您的代码做出假设,即您在从非对象获取数据时遇到错误。但我也可能是错的,这就是为什么你应该包括它!
  • for 循环是因为我正在计算数组的每个索引在获取的数据中重复的次数。我不太了解您所说的表达部分,除了我尝试使用的方法之外,还有其他方法吗? - Rizier123

标签: php arrays loops mysqli


【解决方案1】:

您的代码只能在for 循环的第一次迭代中工作,因为当内部while 循环完成时,将不会再从查询中获取任何行。您可以回退查询,但更好的方法是不使用 for 循环。

while ($row = mysqli_fetch_assoc($result)) {
    $vaccinesArr[$row['vaccID']]++;
}

另外,如果$vaccinesArr 的元素应该是数字,则不应将它们放在引号中。当你使用++ 时,PHP 会将字符串转换为数字,但为什么会混淆呢?

$vaccinesArr = array(0, 0, 0, ....);

【讨论】:

  • 每次调用mysqli_fetch_assoc() 时,它都会从结果集中获取下一行。除非您倒回到开头,否则之前获取的任何行都不会再次获取。如果要多次处理结果,最好的方法是使用一个循环将它们全部放入一个数组中(或使用mysqli_fetch_all()),然后每次要处理数据时使用foreach()。跨度>
  • 我不能将我的查询结果分配给两个变量并在获取时分别使用每个变量吗?像这样? $result = Modulator::getDb()->query($getDoctorReport); $result1 = 调制器::getDb()->query($getDoctorReport);
  • 执行两次查询,这对数据库来说是不必要的开销。执行一次查询,将所有行收集到一个数组中,然后多次使用它要简单得多。
猜你喜欢
  • 1970-01-01
  • 2014-09-08
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 2016-06-22
相关资源
最近更新 更多