【问题标题】:PHP Array is overwritten when it exits the while loop where the values are assignedPHP数组在退出分配值的while循环时被覆盖
【发布时间】:2020-04-22 13:07:59
【问题描述】:

我的数据库中有一个名为 statussen 的表,有 10 种颜色。现在我想将这些颜色放入一个数组中以便我可以使用它们,我在我的代码中放置了 2 个标记,因为在 Marker1 中,数组完全正常地填充了 10 种颜色。但是一旦我退出 while 循环(Marker2 所在的位置),剩下的唯一颜色就是最后一个颜色。 我在这里也发现了这个问题:array is overwritten by the last element in php。 但我认为它不适用于我的问题。 提前感谢所有帮助

$colors = array();
$result = mysqli_query($_SESSION['conn'], "SELECT kleur FROM statussen;");
while ($row=mysqli_fetch_row($result)) 
{
    for ($i = 0;$i < 10; $i++)
    {
        $colors[$i] = $row[$i];
    }
    //Marker1
}
//Marker2

【问题讨论】:

  • 你不需要内部循环。现在,你正在用十个相同的元素填充一个数组,十次。
  • 你只需要while()循环和$colors[] = $row[0];
  • @NigelRen 谢谢!这成功了

标签: php mysql arrays


【解决方案1】:

据我了解:

您正在使用 while 循环,它一个接一个地遍历数组,因此 while 循环内一次只有一条记录,for 循环也是如此(这不是必需的)

第二件事是您正在添加索引$colors[$i]。每次 for 循环初始化时,它都会设置$i = 0,这意味着它将值设置为$colors[0] = $row[$i],以便它被覆盖。

你可以直接使用这样的代码:

$colors = array();
$result = mysqli_query($_SESSION['conn'], "SELECT kleur FROM statussen;");
while ($row=mysqli_fetch_row($result)) 
{
    $colors[] = $row[$i];
}
//Marker2

注意颜色数组$colors[]没有提供索引,在这种情况下PHP会自动从0开始为其添加增量索引。

【讨论】:

    猜你喜欢
    • 2016-02-24
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2018-02-08
    • 1970-01-01
    • 2015-09-14
    • 2012-10-02
    • 1970-01-01
    相关资源
    最近更新 更多