【问题标题】:Sorting HTML table with JSON data in alphabetical order按字母顺序对带有 JSON 数据的 HTML 表进行排序
【发布时间】:2020-09-23 23:20:54
【问题描述】:

所以,我是一个 PHP 新手,在创建表格和排序时可以使用一些技巧。我不是在寻找一个特别花哨的解决方案,而是让它发挥作用。

JSON 数据从 API 导入到变量中,我想在列表中打印产品名称和价格,并按产品名称按字母顺序对其进行静态排序,而不是它们出现在数组中的顺序。我创建了一个工作正常的 HTML 表格,但在对其进行排序时我非常卡住。是否可以使用一些循环而不是涉及 JavaScript 或类似的东西?

我在 $product_data 中有导入和解码的 JSON 数据,我正在打印这样的表格:

<table id="articles">
<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>Price</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach($product_data as $products) { ?>
        <tr>
            <td><?= $products->product_name; ?></td>
            <td><?= $products->price; ?></td>
        </tr>
        <?php } ?>
    </tbody>
</table>

我找到了很多解决方案,您可以使用 JS 进行动态排序,或者在连接到 SQL 数据库时进行排序,但我只是希望它按字母顺序显示,无需用户交互。

谢谢

【问题讨论】:

  • 查看 javascript 插件 DataTables。它允许您相当轻松地对表格进行排序、搜索和分页,而无需用户交互。如果您想要基于 PHP 的解决方案,您可以在 PHP in several ways 中按产品名称对数组进行排序

标签: php html-table


【解决方案1】:

就在您的 foreach 循环之前,您可以使用 usort 函数对数组进行排序。此函数允许您使用自己的函数对数组进行排序:

usort( $product_data, fn($a,$b) => strcmp($a->product_name, $b->product_name) );

顺便说一句:我认为将 forach 循环中的 $products 变量重命名为 $product 是个好主意,因为它代表单个对象(单个产品)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 2018-12-07
    • 1970-01-01
    • 2022-10-07
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    相关资源
    最近更新 更多