$form_data = explode("&", $form_data);
好到目前为止一切都那么好......我现在有一个像这样的阵列:
Array
(
[0] => settings=2
[1] => options=3
[2] => color=3
[3] => action=save
)
1
好的,现在我需要知道如何做两件事。首先,如何从阵列中删除所有“action = save”的出现?
其次,如何使这个数组成为键值对(关联数组)?比如“settings => 2”?
...谢谢
答案 0 :(得分:3)
有a function。 :)
parse_str('settings=2&options=3&color=3&action=save', $arr);
if (isset($arr['action']) && $arr['action'] == 'save') {
unset($arr['action']);
}
print_r($arr);
但仅供参考,您可以像这样手动完成:
$str = 'settings=2&options=3&color=3&action=save';
$arr = array();
foreach (explode('&', $str) as $part) {
list($key, $value) = explode('=', $part, 2);
if ($key == 'action' && $value == 'save') {
continue;
}
$arr[$key] = $value;
}
这与parse_str
不完全相同,因为key[]
密钥无法正确解析。不过,我已经足够你的榜样了。
答案 1 :(得分:1)
$str = 'settings=2&options=3&color=3&action=save&action=foo&bar=save';
parse_str($str, $array);
$key = array_search('save', $array);
if($key == 'action') {
unset($array['action']);
}
答案 2 :(得分:0)
这有助于将数组解析为键/值
$array; // your array here
$new_array = array();
foreach($array as $key)
{
$val = explode('=',$key);
// could also unset($array['action']) if that's a global index you want removed
// if so, no need to use the if/statement below -
// just the setting of the new_array
if(($val[0] != 'action' && $val[1] != 'save'))$new_array[] = array($val[0]=>$val[1]);
}