Как отсортировать ассоциативный массив - PullRequest
1 голос
/ 27 июня 2011

Я хочу отсортировать ключ следующего массива. Я использую ksort (), но я не знаю, как его использовать. Есть идеи?

<code><?php
        $a = array(
                'kuy' => 'kuy',
                'apple' => 'apple',
                'thida' => 'thida',
                'vanna' => 'vanna',
                'ravy' => 'ravy'
              );

        $b = ksort($a);
        echo "<pre>";
        print_r($b);
        echo "
";

Ответы [ 9 ]

4 голосов
/ 27 июня 2011

ksort() сортирует сам массив и не создает отсортированную копию

<code>$a = array(
  'kuy'   => 'kuy',
  'apple' => 'apple',
  'thida' => 'thida',
  'vanna' => 'vanna',
  'ravy'  => 'ravy'
);

ksort($a);
echo "<pre>";
print_r($a);
echo "
";
2 голосов
/ 27 июня 2011

Если вы не хотите сохранять исходный порядок $ a, используйте: -

ksort($a);
print_r($a);

Если вы хотите сохранить $ a, но также хотите отсортированную версию, используйте: -

$b = $a;
ksort($b);
print_r($b);

Как сказано в моем комментарии, страница руководства проясняет ситуацию.http://www.php.net/manual/en/function.ksort.php

2 голосов
/ 27 июня 2011

Вы найдете ответ там: http://php.net/manual/de/function.ksort.php

Используйте его так же, как:

ksort($a);

, затем $ a сортируется.

2 голосов
/ 27 июня 2011

ksort не возвращает массив.Он просто сортирует исходный массив и возвращает bool «Возвращает TRUE в случае успеха или FALSE в случае неудачи».

Таким образом, ваш отсортированный массив равен $ a, а не $ b.смотрите здесь: http://codepad.org/zMTFTPGf

1 голос
/ 27 июня 2011

ksort принимает аргумент по ссылке и изменяет его напрямую, возвращаемое значение просто указывает на syccess или сбой.

1 голос
/ 27 июня 2011

ksort возвращает логическое значение - была ли сортировка успешной или нет. Он сортирует массив на месте - где он изменяет переменную массива, а не возвращает отсортированную копию.

Попробуйте:

ksort($a);
print_r($a);
1 голос
/ 27 июня 2011

ksort возвращает логическое значение и сортирует исходный массив, поэтому вы должны вывести $a вместо $b, поскольку $b - это логическое значение, возвращаемое ksort, которое либо true, либо false в зависимости от результата ksort

ksort($a);    
print_r($a);
0 голосов
/ 27 июня 2011

Как сказал Феликс, посмотрите документацию. Вы также можете посмотреть пример здесь

0 голосов
/ 27 июня 2011

ksort возвращает логическое значение, независимо от того, был он успешным или нет, он не возвращает другой отсортированный массив.Изменяет исходный массив.

print_r($a);
...