我有两个数组:
$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的已知错误,但它仍然没有解决方案。知道如何解决它吗?
答案 0 :(得分:0)
正如你所指出的,这是一种已知的行为。
讨论中提出了解决方案
目前我打算用额外的0(或任何非数字)为所有数组键添加前缀,以强制将其转换为字符串。
当您尝试将整数转换为字符串时,如下所示:
(string)$info['idnumber']
你仍然得到整数,因为你有一个有效的数字作为字符串。
所以你需要有一个字符串和一些前缀。前缀可以是0或任何其他非数字字符。像我一样
$info['idnumber'] = '010066';
或者
$info['idnumber'] = 'i00066';
这将返回确切的索引。