array_multisort 将字符串索引转换为整数索引

array_multisort Converts string index into an integer index

我有两个数组:

 $info = array();
 $submitted = array();

我在下面声明了一个作业:

 $info['idnumber'] = 10066;
 $submitted[$info['idnumber']] = 'Wow';

 array_multisort($submitted); 

这样做之后,显示 $submitted 数组。

 foreach($submitted as $key => $row){
      echo $key;
 }

为什么显示0而不是10066?我尝试将我的代码调整为:

$info['idnumber'] = 10066;
$submitted[(string)$info['idnumber']] = 'Wow';

$info['idnumber'] = 10066;
$submitted[strval($info['idnumber'])] = 'Wow';

仍然显示010066作为$submitted数组的索引怎么显示?

更新:

我发现这是 array_multisort 的一个已知错误,但仍然没有解决方案。知道如何解决吗?

正如您所指出的那样,这是一种已知行为。

讨论中提出了解决方案

For the moment I'm going to say prefix all your array keys with an extra 0 (or any non-numeric) to force their casting as strings.

当您尝试像这样将整数转换为字符串时:

(string)$info['idnumber']

你仍然得到整数,因为你有一个有效的字符串数字。

所以你需要一个带有一些前缀的字符串。前缀可以是 0 或任何其他非数字字符。像我

$info['idnumber'] = '010066';

$info['idnumber'] = 'i00066';

这将 return 准确的索引。