-1

我有一个带有交易字段的数据库,它显示了我网站上带来的产品。我正在尝试开发一个管理界面,我可以在其中看到带来的产品。

字符串看起来像这样 37,2:27,1:5,3:94,10:49,15:

这基本上意味着客户订购了编号为 37 且数量为 2 的产品。他们的交易中包括编号为 27 的产品编号为 1,依此类推。

product_id,ordered_quantity:nextproduct_id,next_orderedquantity.

为了显示此信息,我需要将其分解。我试过 php explode 但遇到了一些麻烦。所以我们需要将冒号上的产品:和数量和id分开comma。字符串可以是一个产品或多个产品。

有人有什么建议吗?

4

2 回答 2

2
$ids = '37,2:27,1:5,3:94,10:49,15';
$products = explode(':', $ids);
$productAndQuantity = array();
foreach ($products as $product) {
    $exploded = explode(',', $product);
    $productAndQuantity[$exploded[0]] = $exploded[1];
}

你得到一个产品 id - 数量数组。

这种存储数据的方式是不可扩展且容易出错的。为什么不使用具有以下字段的表:userId、productId、数量?

于 2012-07-14T22:38:45.993 回答
-1

这是我一起扔的东西-

$str = '37,2:27,1:5,3:94,10:49,15:';

$a = explode(':',$str); // split by colon ":"

$data = array(); 
foreach ($a as $product) {  // iterate over each product
    $item = explode(',',$product); // split product and quanitity
    $data[$item[0]] = array(  // use product_id [0] as array key
      'product_id'=>$item[0],
      'quantity'=>$item[1]
    );
}

// in this example there is a trailing colon - this removes it.    
array_pop($data);

print_r($data);

Array
(
    [37] => Array
        (
            [product_id] => 37
            [quantity] => 2
        )

    [27] => Array
        (
            [product_id] => 27
            [quantity] => 1
        )

    [5] => Array
        (
            [product_id] => 5
            [quantity] => 3
        )
    ...
)
于 2012-07-14T22:41:08.073 回答