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

时间:2015-09-10 02:04:17

标签: php arrays type-conversion array-multisort

我有两个数组:

 $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';

仍显示0。如何将10066显示为$submitted数组的索引?

更新

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

1 个答案:

答案 0 :(得分:0)

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

讨论中提出了解决方案

  

目前我打算用额外的0(或任何非数字)为所有数组键添加前缀,以强制将其转换为字符串。

当您尝试将整数转换为字符串时,如下所示:

(string)$info['idnumber']

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

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

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

或者

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

这将返回确切的索引。