Как отсортировать массив строк в PHP?[здесь строки - это путь.например, /root/mandy/a.pdf, b.pdf & c.pdf - PullRequest
3 голосов
/ 16 мая 2011

как отсортировать массив строк в php?Здесь строки - это пути.Например, /root/mandy/a.pdf, b.pdf & c.pdf etc.

Я пытался использовать функцию sort() с ее параметрами, но она не работает?

РЕДАКТИРОВАТЬ (на основе комментариев ОП):

Мой плохой!Я не правильно разместил этот вопрос.Извинения ...

На самом деле это массив карт [not sure may be array of array] -> array("path => "file_name"), и мне нужно отсортировать его соответственно file_name.

Ответы [ 3 ]

5 голосов
/ 04 февраля 2015

Или еще лучше, используйте strcmp для сравнения строк

uasort($yourArray, function ($a, $b) {
    return strcmp($a['path'], $b['path']);
});
4 голосов
/ 16 мая 2011

На основе ваших обновлений.

Вы можете попробовать использовать uasort(), который позволяет вам определять функцию сравнения и также поддерживает связь с индексами (не уверен, если вам это нужно, используйте usort(), если нет).

Я написал здесь функцию сравнения как замыкание , которое доступно с PHP 5.3.В более ранних версиях вы можете создать обычную функцию и использовать ее имя в качестве строки во втором параметре uasort().

uasort($yourArray, function ($a, $b) {
    if ($a['path']==$b['path']) return 0;
    return $a['path']>$b['path'] ? 1 : -1;
});

. Вы можете изменить path на любое значение, соответствующее ключу ваших именЯ только что сделал предположение на основе вашего комментария.

4 голосов
/ 16 мая 2011
$strings = array('/root/mandy/c.pdf', '/root/mandy/a.pdf', '/root/mandy/b.pdf');
sort($strings);
print_r($strings);

У меня работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...