взорвать подраздел массива? - PullRequest
1 голос
/ 24 января 2011

У меня есть массив записей, и я хочу использовать только его подраздел.Например, у меня есть:

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

Я получу произвольное количество имен среди остальных переменных.Из них я хочу составить список тех имен, интерполированных запятыми.Таким образом, для приведенного выше массива выходные данные должны быть:

Fred,Mary,James

Но для любого данного поста может быть любое число (ну, не любое ) имен, все в форме name # , где # - это порядковый номер.

Какой самый простой способ сделать это?

Ответы [ 3 ]

2 голосов
/ 24 января 2011

Простой цикл может помочь:

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

Попробуйте здесь.

0 голосов
/ 24 января 2011

Я бы поместил имена в массив записей .. php отлично с этим справляется ....

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

тогда вы можете получить доступ к этому

$_POST['names'][1]

И продолжаю ...

foreach($_POST['names'] as $name => $value)
{
    echo $value . ", "; 
}
0 голосов
/ 24 января 2011

Если имена означают строки длиной более 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);
...