我有两个数组:
$info = array();
$submitted = array();
下面声明了一个赋值:
$info['idnumber'] = 10066;
$submitted[$info['idnumber']] = 'Wow';
array_multisort($submitted);
操作完成后,显示$submitted
array。
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(或任何非数字),以强制转换为字符串。
当您尝试将整型转换为字符串时:
(string)$info['idnumber']
你仍然得到整数,因为你有一个有效的数字作为字符串。
所以你需要一个带前缀的字符串。前缀可以是0或任何其他非数字字符。如i
$info['idnumber'] = '010066';
或
$info['idnumber'] = 'i00066';
这将返回确切的索引。