2012-03-23 116 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