我是从分类学术语中获取键值格式的数组,以填充表单元素选择选项的。
英语以外的其他语言的顺序不正确,因此我正在尝试对它进行排序,但没有结果。
这是数组:
Array
(
[AT] => Autriche
[BE] => Belgique
[BG] => Bulgarie
[HR] => Croatie
[CY] => Chypre
[CZ] => République Tchèque
[DK] => Danemark
)
我尝试asort(),但它返回'1'。
有人知道吗?
编辑:
使用的代码:
foreach ($tree as $term) {
$term_object_wrapper = entity_metadata_wrapper('taxonomy_term', $term_object = taxonomy_term_load($term->tid));
if ($term_object_wrapper->field_member_state->value() == 1) {
$iso_code = $term_object_wrapper->iso_3166_1_alpha_2_code->value();
$i18ned_country_term = i18n_taxonomy_localize_terms($term_object);
$output_localized[$iso_code] = $i18ned_country_term->name;
}
}
$foo = asort($output_localized);
print('<pre>');
print_r( $foo );
print('</pre>');
结果为“ 1”
答案 0 :(得分:1)
<?php
$array = [
"AT" => "Test1",
"BE" => "Test2",
"BG" => "Test3",
"HR" => "Test4",
"CY" => "Test5",
"CZ" => "Test6",
"DK" => "Test7"
];
asort($array);
echo "<pre>";
print_r($array);
?>
输出:
Array
(
[AT] => Test1
[BE] => Test2
[BG] => Test3
[HR] => Test4
[CY] => Test5
[CZ] => Test6
[DK] => Test7
)
请检查并确认
谢谢
穆图
答案 1 :(得分:0)
asort()
返回一个布尔值,而不是修改后的数组,因为您通过引用将其传递。
此代码有效:
$array = [
"AT" => "Autriche",
"BE" => "Belgique",
"BG" => "Bulgarie",
"HR" => "Croatie",
"CY" => "Chypre",
"CZ" => "République Tchèque",
"DK" => "Danemark"
];
asort($array);
var_dump($array); // prints my sorted array
答案 2 :(得分:0)
如果查看asort函数签名,则会看到该数组参数通过引用传递给函数
bool asort ( array &$array [, int $sort_flags = SORT_REGULAR ] )
这意味着变量的实际值将在函数内部更改,并且无需返回任何内容。如果是asort(),则仅在成功时返回TRUE,否则就返回FALSE。因此,在您的情况下,您只需要这样的东西:
$array = Array
(
[AT] => Autriche
[BE] => Belgique
[BG] => Bulgarie
[HR] => Croatie
[CY] => Chypre
[CZ] => République Tchèque
[DK] => Danemark
);
usort($array);
,您的数组将被排序。