帮助PHP数组代码

时间:2011-02-19 05:00:54

标签: php arrays

嘿伙计们! 我需要一些帮助来编写一个以我需要的格式创建数组的代码。我有这么长的文本字符串 - > “settings = 2& options = 3& color = 3& action = save”......等现在我接下来要把它变成一个数组如下:

$form_data = explode("&", $form_data);

好到目前为止一切都那么好......我现在有一个像这样的阵列:

Array
(
[0] => settings=2
[1] => options=3
[2] => color=3
[3] => action=save
)
1

好的,现在我需要知道如何做两件事。首先,如何从阵列中删除所有“action = save”的出现?

其次,如何使这个数组成为键值对(关联数组)?比如“settings => 2”?

...谢谢

3 个答案:

答案 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']);
}

Ideone Link

答案 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]);
}