为什么我不能对这个数组排序?

时间:2018-07-17 12:46:02

标签: php arrays sorting

我是从分类学术语中获取键值格式的数组,以填充表单元素选择选项的。

英语以外的其他语言的顺序不正确,因此我正在尝试对它进行排序,但没有结果。

这是数组:

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”

3 个答案:

答案 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);

,您的数组将被排序。