Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php setlocale函数的作用域?_Php - Fatal编程技术网

Php setlocale函数的作用域?

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的范围是什么?它是否仅限于我所在的当前

我想用php对一个包含德语“umlaute”的数组进行排序。对于php来说,这似乎不是一项容易的任务。我在网上找到了以下示例:

$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()更改了进程范围的区域设置。“