RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1204660
Accepted
Alines
Alines
Asked:2021-11-15 01:00:42 +0000 UTC2021-11-15 01:00:42 +0000 UTC 2021-11-15 01:00:42 +0000 UTC

PHP - 如何在排序的数组元素中显示元素名称

  • 772

在 Opencart 3 上,购物车页面显示用户已放置在那里的产品。任务是按制造商对这些商品进行分类,并分别显示制造商的名称。得到子组。它应该看起来像这样。

Название производителя 1
Товар 1
Товар 2
Товар 3

Название производителя 2
Товар 5
Товар 6
Товар 7

目前,使用 usort,可以按制造商对所有产品进行排序

usort($data['products'], function($a, $b) {
    return $a['manufacturer'] <=> $b['manufacturer'];
}); 

结果,我得到了所需的排序。该数组按您需要的顺序排列。但是现在如何将商店的名称 ['manufacturer'] 分隔成一个单独的名称,使其看起来像上面的示例?

Array
(
    [0] => Array
        (
            [cart_id] => 23
            [thumb] => http://magis.loc/image/cache/catalog/Products/shoe3-90x90.jpg
            [name] => Кроссовки мужские белые для повседневной носки
            [model] => 
            [upc] => 8
            [manufacturer] => Bykilian
            [manufacturers] => http://magis.loc/index.php?route=product/manufacturer/info&manufacturer_id=12
            [option] => Array
                (
                )

            [recurring] => 
            [quantity] => 2
            [stock] => 1
            [reward] => 
            [price] => 179.00 $
            [total] => 358.00 $
            [href] => http://magis.loc/index.php?route=product/product&product_id=52
        )

    [1] => Array
        (
            [cart_id] => 26
            [thumb] => http://magis.loc/image/cache/catalog/Products/shoe4-90x90.jpg
            [name] => Бутсы спортивные мужские
            [model] => 36 - 1 шт
            [upc] => 8
            [manufacturer] => Bykilian
            [manufacturers] => http://magis.loc/index.php?route=product/manufacturer/info&manufacturer_id=12
            [option] => Array
                (
                )

            [recurring] => 
            [quantity] => 2
            [stock] => 1
            [reward] => 
            [price] => 80.00 $
            [total] => 160.00 $
            [href] => http://magis.loc/index.php?route=product/product&product_id=53
        )


    [2] => Array
        (
            [cart_id] => 29
            [thumb] => http://magis.loc/image/cache/catalog/Products/shoe5-90x90.jpg
            [name] => Кроссовки мужские для повседневной носки
            [model] => 
            [upc] => 8
            [manufacturer] => Kidsnail
            [manufacturers] => http://magis.loc/index.php?route=product/manufacturer/info&manufacturer_id=13
            [option] => Array
                (
                )

            [recurring] => 
            [quantity] => 2
            [stock] => 1
            [reward] => 
            [price] => 194.00 $
            [total] => 388.00 $
            [href] => http://magis.loc/index.php?route=product/product&product_id=54
        )

    [3] => Array
        (
            [cart_id] => 24
            [thumb] => http://magis.loc/image/cache/catalog/Products/shoe7-90x90.jpg
            [name] => Туфли женские открытые
            [model] => 
            [upc] => 8
            [manufacturer] => Longstormaier
            [manufacturers] => http://magis.loc/index.php?route=product/manufacturer/info&manufacturer_id=11
            [option] => Array
                (
                )

            [recurring] => 
            [quantity] => 4
            [stock] => 1
            [reward] => 
            [price] => 199.00 $
            [total] => 796.00 $
            [href] => http://magis.loc/index.php?route=product/product&product_id=56
        )

    [4] => Array
        (
            [cart_id] => 25
            [thumb] => 
            [name] => Туфли женские на каблуке
            [model] => 
            [upc] => 6
            [manufacturer] => Longstormaier
            [manufacturers] => http://magis.loc/index.php?route=product/manufacturer/info&manufacturer_id=11
            [option] => Array
                (
                )

            [recurring] => 
            [quantity] => 3
            [stock] => 1
            [reward] => 
            [price] => 150.00 $
            [total] => 450.00 $
            [href] => http://magis.loc/index.php?route=product/product&product_id=51
        )



)

这是默认函数的样子,它输出一个数组

            foreach ($products as $product) {
                $product_info = $this->model_catalog_product->getProduct($product['product_id']);
                $product_total = 0;
    

                $data['products'][] = array(
                    'cart_id'   => $product['cart_id'],
                    'thumb'     => $image,
                    'name'      => $product['name'],
                    'model'     => $product['model'],
                    'upc'     => $product_info['upc'],
                    'manufacturer'     => $product_info['manufacturer'],
                    'manufacturers'    => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $product_info['manufacturer_id']),
                    'option'    => $option_data,
                    'recurring' => $recurring,
                    'quantity'  => $product['quantity'],
                    'stock'     => $product['stock'] ? true : !(!$this->config->get('config_stock_checkout') || $this->config->get('config_stock_warning')),
                    'reward'    => ($product['reward'] ? sprintf($this->language->get('text_points'), $product['reward']) : ''),
                    'price'     => $price,
                    'total'     => $total,
                    'href'      => $this->url->link('product/product', 'product_id=' . $product['product_id'])
                );
            }

php
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    splash58
    2021-11-15T01:05:21Z2021-11-15T01:05:21Z

    重建阵列

    $res = [];
    
    foreach ($data['products'] as $x) {
       $res[$x['manufacturer']][] = $x;
    }
    
    foreach ($res as $k=>$v) {
       // $k - производитель 
       foreach ($v as $x) { 
            // $x - товар
       }
    }
    
    • 2
  2. Олександр Слуцький
    2021-11-15T01:33:50Z2021-11-15T01:33:50Z
    <?php
    
    $products = [
        ['manufacturer' => 'Nike', 'name' => 'Кроссовки мужские'],
        ['manufacturer' => 'Nike', 'name' => 'Кроссовки женские'],
        ['manufacturer' => 'Puma', 'name' => 'Штаны мужские'],
        ['manufacturer' => 'Puma', 'name' => 'Штаны женские'],
    ];
    
    $manufacturerToProducts = [];
    foreach ($products as $product) {
        $manufacturer = $product['manufacturer'];
        $manufacturerToProducts[$manufacturer][] = $product;
    }
    
    foreach ($manufacturerToProducts as $manufacturer => $products) {
        echo "\n{$manufacturer}:\n";
        foreach ($products as $product) {
            echo "\t{$product['name']}\n";
        }
    }
    

    该脚本将输出:

    Nike:
            Кроссовки мужские
            Кроссовки женские
    
    Puma:
            Штаны мужские
            Штаны женские
    

    甚至不需要对 $products 数组进行排序。

    • 0

相关问题

  • mysqli 类的对象无法转换为字符串

  • 您的系统中缺少 ext-http *,您的系统中缺少 ext-mysql_xdevapi *

  • 如何从csv中删除bom?

  • 当我按下 Enter 键时,如何让 PhpStorm 的 Emmet 插件触发,就像 VS Code 一样?

  • 注释在 Symfony5 中不起作用

  • 搜索最近的地理位置点

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5