PHP 有很多用于排序数组的函数。您可以使用asort()按其包含的值按字母顺序对数组进行排序,然后使用array_search()检索索引
像这样:
?php
$state[1]='FG';
$state[2]='BU';
$state[3]='CA';
asort($state);
$key = array_search('BU',$state);
print $state[$key] . PHP_EOL;
print_r($state);
这将输出
BU
Array
(
[2] => BU
[3] => CA
[1] => FG
)
如您所见,它保留了数组的原始索引值。但是,这确实意味着当您在不直接使用索引的情况下循环遍历数组时,例如当您使用foreach时,然后您会以重新排序的顺序循环遍历它:
foreach($state as $key=>$value){
print "$key: $value" . PHP_EOL;
}
2: BU
3: CA
1: FG
您需要先在数组上使用ksort以再次按索引对其进行排序,然后才能获得您可能想要/期望的常规 foreach 行为。
ksort($state);
foreach($state as $key=>$value){
print "$key: $value" . PHP_EOL;
}
1: FG
2: BU
3: CA
当然,使用带有数字索引值的for结构进行循环总是正确的。请注意,这些函数通过引用传递给您的数组,这意味着它们在“实时数组”上工作,而不是在副本上,如果您想要一个,您需要先制作自己的副本,参考说明中的更多信息。