在PHP中循环通过关联数组时出错

在PHP中循环通过关联数组时出错,php,Php,我得到以下错误: 注意:第37行中的数组到字符串转换 0:数组 尝试运行以下操作时: while($allOrders = mysqli_fetch_assoc($result)) { $orderName = $allOrders["order_name"]; $orderId = $allOrders["id"]; $orders[] = array($orderName => $orderId); } foreach ($orders as $orderNam

我得到以下错误:

注意:第37行中的数组到字符串转换 0:数组

尝试运行以下操作时:

while($allOrders = mysqli_fetch_assoc($result)) {
    $orderName = $allOrders["order_name"];
    $orderId = $allOrders["id"];
    $orders[] = array($orderName => $orderId);
}
foreach ($orders as $orderName1 => $orderId1) {
    echo("".$orderName1.": ".$orderId1."");
}

正如@Rizier123正确指出的那样,您正试图通过多维数组的顶层
foreach()
。您的MySQLi查询将返回一个带有嵌入式数组级别的
$results
数组。如果从MySQL行和单元格的角度考虑您的
$results
,您将通过
$results
循环到每个
$row
,但也应该通过每个
$row
的多个
$cell
循环

试试这个

foreach ($result as $row => $rowvalue) { // now $row is the row name in the array, and $rowvalue is the individal row array itself
    // some work
    foreach ($rowvalue as $cell => $cellvalue) { // now $cell is the cell name in the array, and $cellvalue is the cell value string itself
        // display your cell names and values
        echo "" . $cell . ": " . $cellvalue . "";
    }
}
循环订单的正确方式:
通常,当您试图以字符串形式获取数组的值时,会收到此警告或错误。这意味着您有多维数组,但您正在尝试以字符串形式获取子数组的值。首先尝试使用此命令
print\r($variable)
检查变量的实际输出。也可以像这样在内部和数组中循环:

foreach($orders as $order)
{
 echo $order->orderId. " | ". $order->orderName;
}

一定是时候了,当我的模型需要这个循环时,我就是这样做的。但我通常在框架中使用ORM。也许我也可以用在你的情况下

我刚刚注意到代码的格式不正确,因为您有一个多维数组!所以你需要2个foreach循环!打印($orders)您将看到我mean@pennst8:看看我的答案,你不应该在订单上循环两次。假设ID是唯一的,而名称可能不是唯一的,我会使用$orders[$orderId]=$orderName;和foreach($orderId=>$orderName){…}
foreach($orders as $order)
{
 echo $order->orderId. " | ". $order->orderName;
}