首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何分隔具有相同值和不同值的php数组

如何分隔具有相同值和不同值的php数组
EN

Stack Overflow用户
提问于 2013-05-17 17:36:38
回答 3查看 715关注 0票数 0

我有一个购物篮,里面有例如6件商品。有些商品是一家商店的商品,另一种商品是一家商店的商品,甚至可能是两家商店的商品。

我希望为每个商店创建因子。我该怎么做呢?我怎么知道篮子里的这些东西是一个店铺的,还是两个或三个店铺的。如何才能将这一项分离到因子。

代码语言:javascript
运行
复制
Array('customer' => Array('basket' => Array(
                    '9_2' => Array
                        (
                            "row" => "0",
                            'item' => 'cd',
                            'count' => '1',
                            'sale_start_date' => '1391-12-25 19:27:56',
                            'sale_end_date' => '1392-04-20 19:27:49',
                            'sale_price' => '40500',
                            'price' => '54564',
                            'id' => '999035',
                            'shopid' => '4'
                        ),
                        '999_17' => Array
                        (
                            'row' => '1',
                            'item' => 'car',
                            'count' => '1',
                            'sale_start_date' => '0000-00-00 00:00:00',
                            'sale_end_date' => '0000-00-00 00:00:00',
                            'sale_price' => '0',
                            'price' => '520000',
                            'id' => '999039',
                            'code' => 'b125nh',
                            'shopid' => '6'
                        ),
                        '9_3' => Array
                        (
                            'row' => '2',
                            'item' => 'book',
                            'count' => '1',
                            'sale_start_date' => '0000-00-00 00:00:00',
                            'sale_end_date' => '0000-00-00 00:00:00',
                            'sale_price' => '0',
                            'price' => '520000',
                            'id' => '999039',
                            'code' => 'b125nh',
                            'shopid' => '4'
                        ),
                        '10_5' => Array
                        (
                            'row' => '2',
                            'item' => 'dvd',
                            'count' => '1',
                            'sale_start_date' => '0000-00-00 00:00:00',
                            'sale_end_date' => '0000-00-00 00:00:00',
                            'sale_price' => '0',
                            'price' => '520000',
                            'id' => '999039',
                            'code' => 'b125nh',
                            'shopid' => '5'
                        )
                    )
                )
            );

这个例子是我会话中的数组。我想要与购物价值分开的因素。例如,在这个篮子中,我们有来自shopid=4的2个项目,来自shopid=6的1个项目和来自shopid=5的一个项目,如何为每个商店创建单独的因素。

首先,我使用usort函数对带有shop I的排序数组进行排序,但是我不能继续为create factor分离每个相同和不相同的商品。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-17 17:49:01

像这样的东西应该是可行的

代码语言:javascript
运行
复制
<?php

$shopItems = array();
foreach ($_SESSION['customer']['basket'] as $basket) {
    $key = $basket['shopid'];
    $shopItems[$key][] = $basket;
}

这将在数组$shopItems的元素中存储来自同一商店id的多组商品

例如(仅显示商店id 4)

代码语言:javascript
运行
复制
Array (
    [4] => Array (
        [0] => array(
            "row" => "0",
            'item' => 'cd',
            'count' => '1',
            'sale_start_date' => '1391-12-25 19:27:56',
            'sale_end_date' => '1392-04-20 19:27:49',
            'sale_price' => '40500',
            'price' => '54564',
            'id' => '999035',
            'shopid' => '4'
        ),
        [1] => array(
            'row' => '2',
            'item' => 'book',
            'count' => '1',
            'sale_start_date' => '0000-00-00 00:00:00',
            'sale_end_date' => '0000-00-00 00:00:00',
            'sale_price' => '0',
            'price' => '520000',
            'id' => '999039',
            'code' => 'b125nh',
            'shopid' => '4'
        )
    )
)
票数 0
EN

Stack Overflow用户

发布于 2013-05-17 17:50:48

代码语言:javascript
运行
复制
$basket = array();
foreach ($_SESSION['customer']['basket'] as $k => $v)
    $basket[$v['shopid']][$k] = $v;
print_r($basket);

结果:

代码语言:javascript
运行
复制
Array
(
    [4] => Array
        (
            [9_2] => Array
                (
                    [row] => 0
                    [item] => cd
                    [count] => 1
                    [sale_start_date] => 1391-12-25 19:27:56
                    [sale_end_date] => 1392-04-20 19:27:49
                    [sale_price] => 40500
                    [price] => 54564
                    [id] => 999035
                    [shopid] => 4
                )

            [9_3] => Array
                (
                    [row] => 2
                    [item] => book
                    [count] => 1
                    [sale_start_date] => 0000-00-00 00:00:00
                    [sale_end_date] => 0000-00-00 00:00:00
                    [sale_price] => 0
                    [price] => 520000
                    [id] => 999039
                    [code] => b125nh
                    [shopid] => 4
                )

        )

    [6] => Array
        (
            [999_17] => Array
                (
                    [row] => 1
                    [item] => car
                    [count] => 1
                    [sale_start_date] => 0000-00-00 00:00:00
                    [sale_end_date] => 0000-00-00 00:00:00
                    [sale_price] => 0
                    [price] => 520000
                    [id] => 999039
                    [code] => b125nh
                    [shopid] => 6
                )

        )

    [5] => Array
        (
            [10_5] => Array
                (
                    [row] => 2
                    [item] => dvd
                    [count] => 1
                    [sale_start_date] => 0000-00-00 00:00:00
                    [sale_end_date] => 0000-00-00 00:00:00
                    [sale_price] => 0
                    [price] => 520000
                    [id] => 999039
                    [code] => b125nh
                    [shopid] => 5
                )

        )

)
票数 0
EN

Stack Overflow用户

发布于 2013-05-17 17:51:42

这应该能起到作用。

代码语言:javascript
运行
复制
function get_seperated_shops($all_items)
{
    $seperated_shops = array();
    foreach($all_items AS $item => $properties)
    {
        $seperated_shops[$properties['shopid']][$item] = $properties;
    }
    return $seperated_shops;
}

echo "<pre>";
print_r(get_seperated_shops($_SESSION['customer']['basket']));
echo "</pre>";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16605885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档