2013-04-03 2 views
0

В одной форме, есть входы названы:извлечения ключевых пары значений из массива и группы массива в PHP

  • foo_name
  • foo_age
  • foo_bday
  • bar_cost
  • bar_date

После того, как я отправлю форму, используя пост как метод, мне захотелось g Roup входы в массивы, как это:

$post = array(
    'foo' => array(), 
    'bar' => array(), 
    'baz' => array() 
) 

Таким образом, все array_keys, что начинается с «Foo» будет выталкиваться в массив «Foo» и так, как другие. Вместе с их соответствующими значениями.

Вот моя попытка:

$post = array('foo' => array(), 'bar' => array(), 'baz' => array()); 
echo '<pre>'; 
foreach ($_POST as $key => $value) { 
    if (startsWith($key, 'foo_')) { 
     array_push($post['foo'], $key = $value); 
    } else if(startsWith($key, 'bar_')) { 
    } else if (startsWith($key, 'baz_')) { 
    } 
} 

foreach ($post['foo'] as $key => $value) { 
    echo $key . ' = ' . $value . '<br>'; 
} 

Последний выход Еогеасп заявление это

0 = 1111 
1 = 1112 
2 = 210 

вместо того, чтобы его array_keys, то Индексы, где производятся, если $key где выводимый

ответ

2
$post = array(); 

foreach($_POST as $key => $value) { 
    $key = explode('_', $key); 
    $post[$key[0]][$key[1]] = $value; 
} 

echo '<pre>'; 
print_r($post); 
echo '</pre>'; 

Вот phpFiddle

0

Если вы можете назвать поля ввода по своему усмотрению, вы можете назвать их name="foo[name]" и т. Д. С самого начала - это даст вам массивы, структурированные соответственно, без необходимости структурировать данные самостоятельно с помощью дополнительного кода.