2012-05-22 40 views
-1

我的表格中有一行顯示爲這樣;將SQL表格行拆分爲php變量

2:2/3:1/17:1/6:1/1:1/ 

我想知道如何將這些變量存儲到php變量中,以便我可以將它們顯示給用戶。 '/'分隔元素,':'分隔元素的各個部分。

我不知道這是否有道理,但它是這樣的;

itemID:quantity/itemID:quantity/itemID:quantity/ 

所以我想分離項目,然後將itemID和數量存儲到變量中以展示給用戶。

我已經嘗試過使用爆炸功能;

$pieces = explode("/", $order_details); 

但我不知道如何分離itemID和數量。

任何幫助?

+4

如果你正常化你的數據庫你不會有像這樣的問題 –

+2

我認爲你可以用explode(「:」,piece。)重複爆炸,但是看起來你的數據庫結構應該是獨立的每個項目和數量的行,而不是將它們合併成一個單一的字符串 –

回答

1
$pieces = explode("/", rtrim($order_details, '/')); 
$items = array(); 
foreach ($pieces as $piece) 
{ 
    list($id, $qty) = explode(':', $piece); 
    $items[$id] = $qty; 
} 
+0

非常感謝。我將如何去設置它,使id = $ id和quanity = $ qty? – user1394849

+0

只需刪除第二行的foreach循環, –

+0

謝謝,完美的工作。還有一件事,它有無論如何可以忽略字符串末尾的最後一個'/'?我得到一個錯誤,因爲它正在尋找': '在最後一項中,但沒有一個。 – user1394849

1

利用parse_str

<?php 
$str = '2:2/3:1/17:1/6:1/1:1/'; 
$str = str_replace(array(':', '/'), array('=', '&'), $str); 

parse_str($str, $vars); 

/* 
$vars now: 
Array 
(
    [2] => 2 
    [3] => 1 
    [17] => 1 
    [6] => 1 
    [1] => 1 
) 
*/ 

如果可能的話,該值存儲到您的表作爲serialized array