大写数组键和小写数组值(从parse_str输入)

感觉该问题已经解决,但我的搜索未找到“好的”解决方案:

我有一个时间紧迫的应用程序,需要转换一个典型的String

"appliCAation=webCALL&Arg1=ABC&arG2=xyZ&someMore=Dec-1950"

到一个assoc数组中。

我知道我可以为此使用parse_str(),但是我想“规范化”用户输入,以便所有键始终为大写,而所有值始终为小写(反之亦然,如果可能的话,可以通过参数来完成,并且不扩大编码)。

由于array_change_key_case无法递归工作,因此我寻求一种精巧的方式,减少了几行代码并提高了性能。

目前,我使用parse_str(strtolower($ input),$ arr),然后循环(递归)$ arr来更改键。不幸的是,这需要两种方法和“许多”代码行。

有更快/更好/更小的解决方案吗?

评论
  • oalias
    oalias 回复

    翻转逻辑并将所有内容都大写,然后递归地将值小写:

    parse_str(strtoupper($string), $array);    
    array_walk_recursive($array, function(&$v, $k) { $v = strtolower($v); });