PHP中的变量自己增加了吗?

HaR*_*ReL 0 php arrays multidimensional-array

一个奇怪的问题.我正在尝试使用medoo和sqlite文件来获取一些数据.我正在接受一个多维数组.我已经检查过print_r,数据确实在其中.

这是print_r输出(短版):

Array (
[0] => Array ( [id] => 1 [name] => aaa ) 
[1] => Array ( [id] => 2 [name] => bbb ) 
[2] => Array ( [id] => 3 [name] => ccc ) 
[3] => Array ( [id] => 4 [name] => ddd ) 
[4] => Array ( [id] => 5 [name] => eee ) ...
)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

$datas = $database->select("suppliers","*");
print_r ($datas);
$length=count($datas);
$i = 0;
while ( $i < $length ) {
    echo $i;
    echo '<a href="edit_sup.php?sup='.$datas[$i]["id"].">".$datas[$i]["name"]."</a><br/>";
    echo $i;
    $i++;
    }
Run Code Online (Sandbox Code Playgroud)

问题是并非所有数据都被打印出来!在尝试打印var时$i,我发现a href在值之前和之后不同!例如,输出是这样的:

0 bbb
21 ddd
43 fff
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,在第一行aaa应该打印 - 而是bbb打印而aaa不是打印!(等等...)

知道为什么会这样吗?谢谢.

Poi*_*oiz 5

你可能想尝试另一种类似的循环结构:

    <?php

    $datas = $database->select("suppliers","*");
    print_r ($datas);

    foreach ($datas as $data) {
        echo '<a href="edit_sup.php?sup='. $data["id"] .'">' . $data["name"] . "</a><br/>";
    }
Run Code Online (Sandbox Code Playgroud)

虽然使用while循环没有什么本质上的错误,但你似乎混淆了单引号和双引号,所以即使While循环仍然可以正常工作,如下所示:

    while ( $i < $length ) {
        echo $i;
        // THE ISSUE WAS JUST WITH THE SWAPPING OF SINGLE QUOTES WITH DOUBLE QUOTES...
        echo '<a href="edit_sup.php?sup=' . $datas[$i]["id"] . '">' . $datas[$i]["name"] . "</a><br/>";
        echo $i;
        $i++;
    }
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你...