PHP提取EXTR_OVERWRITE,只有在存在冲突的情况下才能工作吗


PHP extract EXTR_OVERWRITE, does it work ONLY if collision exists?

PHP提取EXTR_OVERWRITE,是否只有在存在冲突的情况下才能工作?

extract(array_map($myclass->trim_value, $_POST), EXTR_OVERWRITE, "var_");

但我注意到,如果我发布$_POST['id'],我会得到$id,而不是$var_id

这是否意味着php会自动发现冲突并仅在该场景中应用规则?我还注意到我的trim_value似乎不起作用。。。我做错了什么?

是的,它会自动检测是否发生碰撞,您也可以在手册中阅读:http://php.net/manual/en/function.extract.php

还有一句话:

额外写入: 如果发生冲突,请覆盖现有变量。

如果你想将其用于所有变量,请使用:

extract($_POST, EXTR_PREFIX_ALL, "var_");