2012-03-23 66 views
3

我希望能夠將所有發佈數據轉換爲字符串,但只保留字符串變量中的值。

所以,如果我發佈的數據是這樣的:

Array ([alloy] => Array ([0] => K18 [1] =>) 
     [color] => Array ([0] => Gold [1] =>) 
     [stone] => Array ([0] => Diamond [1] =>) 
     [dimension] => Array ([0] => 3cm [1] =>) 
     [button1] => Submit) 

我想它終於看起來像:$數據=「K18,彩金,鑽石,3釐米」;

我試過serialize,imploding數組,http_build_query,但他們不是我所需要的。

如果它有助於獲得整個想法,我從4組複選框和單選按鈕數組收集數據,我想將選定的值放入分隔字符串並保存到我的分貝。

+3

但是'POST'數據*** ***是一個數組... – JYelton 2012-03-23 15:18:08

+3

'serialize'或'json_encode()'聲音。問題在哪裏? – 2012-03-23 15:18:34

+0

你能給我們提供一些關於你正在收集的數據的信息,以及爲什麼像'serialize'這樣的東西不能工作? – 2012-03-23 15:19:32

回答

2

也許這是你所需要的:就像你需要什麼

$s = array(); 
foreach ($_POST as $k => $v) { 
    if (is_array($v)) { 
    if ('color' === $k) { 
     array_push($s, implode('', array($k, $v[0]))); 
    } else { 
     array_push($s, $v[0]); 
    } 
    } 
} 
echo implode(', ', $s); 
+0

這正是我想到的。非常感謝! 雖然我不需要額外的('顏色'--- $ k)檢查,但在我的示例中,這是一個簡單的錯誤類型。 – bikey77 2012-03-23 15:45:30

+0

很高興幫助,隊友:) – dotoree 2012-03-23 16:01:54

+0

當從同一複選框數組中選擇多個複選框時,我遇到了一個小問題,只有第一個被保存。任何方式我可以拯救他們呢? – bikey77 2012-03-26 09:19:15

1

這裏有一個小技巧。分組時使用name[]而不是name。這樣,$ _POST [「name」]變量將是一個數組,就像你想的那樣。

實施例:

<input type="checkbox" name="inputname[]" value="1" /> 
<input type="checkbox" name="inputname[]" value="2" /> 
<input type="checkbox" name="inputname[]" value="3" /> 

PHP

print_r($_POST['inputname']); 

//輸出,如果所有檢查

Array 
(
    [0] => 1 
    [1] => 2 
    [2] => 3 
) 

注:該陣列將只包含檢查的值

+0

我的收音機和複選框已按照您的建議命名。請閱讀我的更新(改寫)的問題。 – bikey77 2012-03-23 15:28:52