Php setlocale函数的作用域?
我想用php对一个包含德语“umlaute”的数组进行排序。对于php来说,这似乎不是一项容易的任务。我在网上找到了以下示例:Php setlocale函数的作用域?,php,Php,我想用php对一个包含德语“umlaute”的数组进行排序。对于php来说,这似乎不是一项容易的任务。我在网上找到了以下示例: $oldLocale=setlocale(LC_COLLATE, "0"); setlocale(LC_COLLATE, 'de_DE.utf8'); usort($countrys, 'strcoll'); setlocale(LC_COLLATE, $oldLocale); 这是预期的工作。我现在的问题是,setlocale的范围是什么?它是否仅限于我所在的当前
$oldLocale=setlocale(LC_COLLATE, "0");
setlocale(LC_COLLATE, 'de_DE.utf8');
usort($countrys, 'strcoll');
setlocale(LC_COLLATE, $oldLocale);
这是预期的工作。我现在的问题是,setlocale的范围是什么?它是否仅限于我所在的当前函数,是否仅限于我的线程、会话或全局
我害怕创造比赛条件,但我找不到关于这方面的任何其他信息,除了:
函数的作用是:设置语言环境信息
这将是一个全局设置,它在脚本运行时保持设置最后一个值。它与会话无关,它的作用域是php进程本身
那么,如果我的客户端使用多线程服务器,我发布的解决方案会干扰其他脚本吗?那将是个坏消息,谢谢!是的,php.net中的确切注释是:“语言环境信息是按进程维护的,而不是按线程维护的。如果您在Windows上的IIS、HHVM或Apache等多线程服务器API上运行php,则在脚本运行时,您可能会遇到语言环境设置的突然更改,尽管脚本本身从未调用setlocale()。发生这种情况的原因是,同时在同一进程的不同线程中运行的其他脚本使用setlocale()更改了进程范围的区域设置。“