内爆数组的一部分?

发布于 2024-10-14 15:36:27 字数 431 浏览 4 评论 0原文

我有一个后阵列,我只想内爆它的一小部分。例如,我有:

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

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

Fred,Mary,James

但对于任何给定的帖子,可能有任意数量(好吧,不是任何)的名称,全部采用 name# 形式>,其中 # 是序列号。

做到这一点最简单的方法是什么?

I have a post array and I want to implode only a subsection of it. For instance, I have:

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

I will get an arbitrary number of names amongst the rest of the variables. From those, I want a concatenated list of those names, interpolated with commas. So for the above array, the output should be:

Fred,Mary,James

But for any given post, there could be any number (well, not any) of names, all in the form name#, where # is a sequential number.

What's the easiest way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月光色 2024-10-21 15:36:27

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

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

在这里尝试一下。

A simple loop could do the trick:

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

Try it here.

寂寞花火° 2024-10-21 15:36:27

如果名称表示长度超过 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);

If names means strings more than 1 character long, here's what you can do:

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

echo implode(',', $result);

If names means values where keys start with name, here's what you can do:

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

echo implode(',', $result);
橘和柠 2024-10-21 15:36:27

我会将名称放入 post 数组中..php 处理得很好....

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

访问它...

$_POST['names'][1]

然后您可以通过并继续

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

I would put names into a post array.. php handles this very well....

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

then you can access this by

$_POST['names'][1]

And continuing...

foreach($_POST['names'] as $name => $value)
{
    echo $value . ", "; 
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文