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不是打印!(等等...)
知道为什么会这样吗?谢谢.
你可能想尝试另一种类似的循环结构:
<?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)
希望能帮助到你...