内爆一个数组的子部分?

时间:2011-01-24 19:56:38

标签: php arrays implode

我有一个post数组,我想只破坏它的一个子部分。例如,我有:

'value1' => 'a'
'value2' => 'b'
'value3' => 'c'
'name1' => 'Fred'
'name2' => 'Mary'
'name3' => 'James'
'value4' => 'd'

我将在其余变量中获得任意数量的名称。从那些,我想要一个这些名称的连接列表,用逗号插入。因此对于上面的数组,输出应为:

Fred,Mary,James

但对于任何给定的帖子,可能有任何数字(嗯,不是任何)的名称,所有这些都是 name#,其中#< / em>是一个序号。

最简单的方法是什么?

3 个答案:

答案 0 :(得分:2)

一个简单的循环可以解决这个问题:

$names = array();
foreach($arr as $k => $v) {
    if(strpos(strtolower($k), 'name') === 0) {
        $names[] = $v;
    }
}
echo implode(",", $names);

Try it here.

答案 1 :(得分:0)

如果names表示长度超过1个字符的字符串,则可以执行以下操作:

foreach($array as $val)
    if(strlen($val) > 1)
         $result[] = $val;

echo implode(',', $result);

如果名称表示键以名称开头的值,则可以执行以下操作:

foreach($array as $key => $val)
    if(substr($key,0,4) == 'name')
         $result[] = $val;

echo implode(',', $result);

答案 2 :(得分:0)

我会把名字放到一个post数组中.. php处理得很好....

<input type="text" name="names[1]" value="" />

然后您可以通过

访问它
$_POST['names'][1]

继续......

foreach($_POST['names'] as $name => $value)
{
    echo $value . ", "; 
}