Как отсортировать массив в php - PullRequest
1 голос
/ 12 ноября 2009

я хочу, чтобы одно и то же значение имело тот же индекс например

1 2 2 3 5

после сортировки:

array(
0=>1
1=>2
1=>2
3=>3
4=>5);

но мы не можем установить дубликат индекса в массиве php.

Ответы [ 4 ]

6 голосов
/ 12 ноября 2009

В php есть функция sort! (Я отвечаю на тему, а не на тело, не совсем следил за вами, но вот как вы сортируете в php)

Пример

<?php

$fruits = array("lemon", "orange", "banana", "apple");

sort($fruits);

foreach ($fruits as $key => $val) {
    echo "fruits[" . $key . "] = " . $val . "\n";
}

?>

Дубликаты * * 1013

В приведенном выше примере дубликаты будут иметь свои собственные индексы, поэтому массив:

5 4 5 1 3 1 2

будет выглядеть так

1 1 2 3 4 5 5

Это может быть не то, что вы ищете, вам нужен другой тип набора данных, а не просто массив, может быть, вы хотите хеш-таблицу или просто связанный список в каждой строке.

Если с вами все в порядке, вы можете удалить дубликаты, используя array_unique $newArray=array_unique($arr);

Что приведет к тому, что массив будет выглядеть так

1 2 3 4 5
2 голосов
/ 12 ноября 2009

Вы правы, вы не можете иметь повторяющиеся значения с одним и тем же индексом в массиве - каждый индекс в массиве имеет ровно одно значение.

Что касается заголовка вопроса, для сортировки массива в PHP используйте sort.

Если это не отвечает на то, что вы пытаетесь задать, вы можете отредактировать свой вопрос, чтобы сделать его более понятным (основная часть вопроса, кажется, не имеет особого отношения к названию вопроса).

Опубликовать редактирование OP :

Вы не можете хранить несколько значений в одном ключе, ваш выходной массив (array(0=>1, 1=>2, 1=>2, 3=>3, 4=>5);) на самом деле не имеет смысла (ключ 1 сопоставляется со значением 2) в отсортированный массив. Вы пытаетесь сохранить количество появлений чисел?

например. учитывая ввод:

1, 2, 2, 3, 5

получить вывод:

array(1=>1, 2=>2, 3=>1, 5=>1); // there is 1 "1", there are 2 "2"s etc.
2 голосов
/ 12 ноября 2009

Попробуйте использовать это.

sort($array);
0 голосов
/ 12 ноября 2009

Вы ищете array_unique :

array array_unique ( array $array [, int $sort_flags = SORT_STRING ] )

Принимает входной массив и возвращает новый массив без повторяющихся значений.

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