首页 > 解决方案 > 使用 while 创建多维数组

问题描述

我正在尝试找出处理此问题的最佳方法。while 循环将所有数据放入一个数组中,太棒了!但是,我想将一组结果分组到一个数组中并将其放回 $row 数组中。我不知道该怎么做。

原因是我想运行一个函数,如果分组的项目有一个值,它将显示图标,并且我认为对它们进行分组会更容易使用。

这就是我现在所拥有的,它会抛出一个错误Too few arguments to function icon(),我明白它为什么会抛出这个错误。

    function icon($pump, $product) {
        if ($pump == 'Yes') {
            return "<img src='.." . IMAGES . "icons/icon-pump.png' alt='Trailer has a Pump' class='trailer-icon'>";
        }
        if ($product == 'Yes') {
            return "<img src='.." . IMAGES . "icons/icon-gas.png' alt='Trailer has Product' class='trailer-icon'>";
        }
    }

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

        $features = array(
            'pump' => $row['trailer_pump'],
            'product' => $row['trailer_product']
        );

        $data = "<tr>\r\n<td><a href='view-trailer.php?id=" . $row['trailer_id'] . "'>" . $row['trailer_number'] . "</a></td>\r\n"
                . "<td>" . $row['first_name'] . " " . $row['last_name'] . "</td>\r\n"
                . "<td>" . icon($features) . "</td>"
                . "<td>" . $row['status_name'] . "</td>\r\n"
                . "<td><a href='https://www.google.com/maps/search/?api=1&query=" . $row['trailer_lat'] . "," . $row['trailer_long'] . "' target='_blank'>View Map</a></td>\r\n"
                . "</tr>\r\n";
        print $data;
    }
} catch (PDOException $e) {
    print $e->getMessage();
}

更新 我正在寻找的结果是:

    Array
(
    [id] => 1
    [trailer_number] => 609
    [trailer_annual] => 0000-00-00
    [trailer_fiveyear] => 0000-00-00
    [trailer_compartments] => 4
    [features] => array (
           [pump] => Yes
           [product] =>
    )
    [trailer_compart1] => 3000
    [trailer_compart2] => 2000
    [trailer_compart3] => 3000
    [trailer_compart4] => 2000
    [trailer_compart5] => 
)

标签: php

解决方案


我认为您正在寻找的只是

$row['features'] = array(
    'pump' => $row['trailer_pump'], 
    'product' => $row['trailer_product']
);

或者如果你想保持$feautres它已经是这样

$row['features'] = $features;

推荐阅读