我请那些有点善意帮助我的人,我想循环从商店程序mysql返回的这个动态数组,因为它是动态的,永远不会知道索引我不知道如何do,我知道只有带有两个键的数组是将给出列表的标题和带有[NomeProdotto]等的数组..将列出项目。
这是要循环的数组:
Array ( [0] => Array ( [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
答案 0 :(得分:0)
首先,不要使用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数组中?这样做的目的是什么?因为您实际上是以这种方式重新创建查询结果...
除了所有事情之外,如果您在使用数组时遇到困难,也许最好先查看一些tutorials;)