2013-04-03 44 views
0

在單一形式的密鑰值對,有輸入命名爲:提取從陣列和基團在PHP陣列

  • foo_name
  • foo_age
  • foo_bday
  • bar_cost
  • bar_date

當我使用post作爲方法提交表單後,我想g roup輸入成陣列是這樣的:

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

使得與「富」啓動所有array_keys將被推入「富」陣列等作爲其他。課程與各自的價值一起。

這裏是我的嘗試:

$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>'; 
} 

最後foreach語句輸出這個

0 = 1111 
1 = 1112 
2 = 210 

而不是有其array_keys的的indeces如果$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]"等 - 這會使您的數組結構相應,而無需使用其他代碼自行構造數據。