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';
仍然显示0
。 10066
作为$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 准确的索引。
我有两个数组:
$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 的一个已知错误,但仍然没有解决方案。知道如何解决吗?
正如您所指出的那样,这是一种已知行为。
讨论中提出了解决方案
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 准确的索引。