我请那些有一点善意的人在这件事上帮助我,我想循环这个从存储过程 mysql 返回的动态数组,因为它是动态的,永远不会知道索引我不知道该怎么做,我知道只有带有两个键的数组是标题,它将提供列表和带有 [NomeProdotto] 等的数组 .. 将列出项目。
这是要循环的数组:
数组( [0] => 数组 ( [NomeMenu] => Pizze [IDMenu] => 1 )[1] => Array ( [IDMenu] => 1 [IDProdotto] => 2 [NomeProdotto] => Eurobar [PrezzoProdotto] => 5.00 [IngredientiProdotto] => Pomodoro, Mozzarella, Patate bollite, Prosciutto ) [2] => Array ( [IDMenu] => 1 [IDProdotto] => 4 [NomeProdotto] => Parripusu [PrezzoProdotto] => 6.00 [IngredientiProdotto] => Pomodoro, Mozzarella, Salsiccia, Funghi, Origano ) [3] => Array ( [IDMenu] => 1 [IDProdotto] => 5 [NomeProdotto] => U Chianu a Muccusa [PrezzoProdotto] => 4.00 [IngredientiProdotto] => Pomodoro, Mozzarella, Origano ) [4] => Array ( [IDMenu] => 1 [IDProdotto] => 6 [NomeProdotto] => Vaddruni [PrezzoProdotto] => 5.00 [IngredientiProdotto] => Pomodoro, Mozzarella, Piselli, Uovo, Prosciutto cotto, Funghi, Origano ) [5] => Array ( [NomeMenu] => Supplementi [IDMenu] => 3 ) [6] => Array ( [IDMenu] => 3 [IDProdotto] => 8 [NomeProdotto] => Prosciutto [PrezzoProdotto] => 1.00 [IngredientiProdotto] => )
)
我这样解决了
$i = 0;
$menus = array();
if ($mysqli->multi_query("CALL getMenuLocale(" . $_REQUEST['locale'] . ")")) {
while ($mysqli->more_results()) {
$mysqli->next_result();
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_all(MYSQL_ASSOC)) {
$menus[$i] = $row;
}
$result->free();
}
$i++;
}
}
但是我在 Godaddy 上发布后立即收到错误:
致命错误:调用第 758 行上的未定义方法 mysqli_result::fetch_all()
我读到解决方案可能是使用 fetch_assoc () 而不是 fetch_all (),它返回上面提到的数组,我该如何循环使用 php
首先,不要使用fetch_all。顾名思义,它返回完整的数据集。所以使用 fetch_assoc,这将以数组的形式返回一行结果。喜欢这个:
while ($row = $result->fetch_assoc()) {
//
}
这使您$row成为元素数量不规则的数组。您还可以循环访问此数组。因此,代码如下所示:
while ($row = $result->fetch_assoc()) {
foreach ($row as $key => $value) {
//$key is 'IDMenu' for example
//$value is '1' for example
//you can then use these variables
}
}
这样,如果数组中有 5 个元素中的 2 个并不重要,您仍然可以使用您拥有的值。
我还看到您正在尝试将$row数组添加到另一个$menus数组中?这样做的目的是什么?因为您实际上是以这种方式重新创建查询结果...
撇开所有事情不谈,如果您在使用数组时遇到困难,也许查看一些教程是个好主意;)