неожиданные результаты с сортировкой (массивом)

0

Нечетные.....

// array sort test

$_ar = array(
  0 => "2015-02-23",
  1 => "2015-02-21",
  2 => "2015-02-28",
  3 => "2015-03-20",
  4 => "2015-03-14",
  5 => "2015-03-21",
  6 => "2015-02-21",
  7 => "2015-02-28",
  8 => "2015-03-07",
  9 => "2015-03-14",
);
$_ar = sort($_ar);

var_dump($_ar);
// returns bool(true)

$__ar = array(
  0 => "2015 02 23",
  1 => "2015 02 21",
  2 => "2015 02 28",
  3 => "2015 03 20",
  4 => "2015 03 14",
  5 => "2015 03 21",
  6 => "2015 02 21",
  7 => "2015 02 28",
  8 => "2015 03 07",
  9 => "2015 03 14",
);
$__ar = sort($__ar);

var_dump($__ar);
// returns bool(true)

$ar = array(
  0 => "20150223",
  1 => "20150221",
  2 => "20150228",
  3 => "20150320",
  4 => "20150314",
  5 => "20150321",
  6 => "20150221",
  7 => "20150228",
  8 => "20150307",
  9 => "20150314",
);

$ar = sort($ar);

var_dump($ar);
// returns bool(true)

Я ожидаю, что это вернет массив, отсортированный по значению даты. Я подумал, может быть, это был (дефис) или пробелы, но во всех моих примерах PHP var_dump просто возвращает bool (true) для каждого экземпляра. Может кто-то подтвердить, что они получают то же самое, или указать, что я должен упустить.... Я попробовал asort() - все тот же.

Теги:
arrays
sorting

2 ответа

1
Лучший ответ

Функция sort и asort возвращает значение bool. Просто вызовите эту функцию, и он будет сортировать массив, не хранить его, он возвращает true или false. Используйте приведенный ниже код

// array sort test

$_ar = array(
  0 => "2015-02-23",
  1 => "2015-02-21",
  2 => "2015-02-28",
  3 => "2015-03-20",
  4 => "2015-03-14",
  5 => "2015-03-21",
  6 => "2015-02-21",
  7 => "2015-02-28",
  8 => "2015-03-07",
  9 => "2015-03-14",
);
 sort($_ar);

var_dump($_ar);
// returns bool(true)

$__ar = array(
  0 => "2015 02 23",
  1 => "2015 02 21",
  2 => "2015 02 28",
  3 => "2015 03 20",
  4 => "2015 03 14",
  5 => "2015 03 21",
  6 => "2015 02 21",
  7 => "2015 02 28",
  8 => "2015 03 07",
  9 => "2015 03 14",
);
$__ar = sort($__ar);

var_dump($__ar);
// returns bool(true)

$ar = array(
  0 => "20150223",
  1 => "20150221",
  2 => "20150228",
  3 => "20150320",
  4 => "20150314",
  5 => "20150321",
  6 => "20150221",
  7 => "20150228",
  8 => "20150307",
  9 => "20150314",
);

sort($ar);

var_dump($ar);
// returns bool(true)

Надеюсь, это поможет вам

  • 1
    Проверьте эту ссылку php.net/manual/en/function.sort.php
  • 0
    DOH! конечно .. спасибо - на мгновение собирался косоглазым!
Показать ещё 2 комментария
2

Вам не нужно назначать возвращаемое значение sort(). Для получения дополнительной информации о sort() см. Руководство: http://php.net/manual/en/function.sort.php

И цитата оттуда:

Возвращает TRUE при успешном завершении или FALSE при сбое.

Так просто:

sort($_ar);

Примечание:

Я бы не рекомендовал вам определять переменные с символами подчеркивания в начале имени, так как это уже используется определенными переменными php, например суперглабильными или магическими константами

Ещё вопросы

Сообщество Overcoder
Наверх
Меню