У меня почемуто так нехочет работать HTML: $all = "12, 14, 15, 16, 13, 13, 12, 14, 15,"; $massiv = explode(", ", $all); // из строки делаем массив $massiv = array_unique($massiv); //удаляем дубляжи $sub = implode(", ", $massiv); //возвращаем в строку В итоге не удаляет числа одинаковые, может где в коде ошибка
Ambrella, все удаляется, только 15 не будет удаляться, так как вначале стоит "15", а потом "15,". Убирай запятую на конце строки. substr функция.
Вот что задаю "12, 14, 15, 16, 13, 13, 12, 14, 15" и на выходе получаю "12, 13, 12, 14, 15, 16" Два числа одинаковые выскочили 12... Может как то альтернативно можно?
Странно, PHP: <pre> <?php $all = "12, 14, 15, 16, 13, 13, 12, 14, 15,"; $all = substr($all, 0, -1); $massiv = explode(", ", $all); $massiv = array_unique($massiv); $sub = implode(", ", $massiv); print_r($massiv); ?> вывод: Код (Text): Array ( [0] => 12 [1] => 14 [2] => 15 [3] => 16 [4] => 13 )
Незнаю что происходит — задаю число "12, 12, 14, 15, 16, 13, 13, 12, 14, 15, " и получаю Array ( [0] => 12 [1] => 12 [2] => 14 [3] => 15 [4] => 16 [5] => 13 [10] => ) тоесть (12, 12, 14, 15, 16, 13,)
У меня не срабатывает ни с "12, 12, 14, 15, 16, 13, 13, 12, 14, 15, " — где последний ", " ни с "12, 12, 14, 15, 16, 13, 13, 12, 14, 15" — где последний число В любом случае дубляжи
Выкрутился, все сортируется! Вот так сделал, через три массива... [js]$all = explode(", ", $all); $process = $all; foreach ($all as $index => $val); $finn = array(); //Сюда будем добавлять не повторяющиеся значения $i=0; while ($i <= $index) { $new = $all[$i]; $b=0; while ($b <= $index) { if ($new == $process[$b]) //если совпадение то! { $c=0; $yes=""; while ($c <= $index) { if ($process[$b] == $finn[$c]) {$yes = "fool"; } $c++; } if ($yes != "fool" ) {$finn[] = $process[$b];} } $b++; } $i++; } [/js]
ЭЭэ??? Три итерации? Кстати, на javascript.ru тоже какое-то неоптимальное решение имхо. [js] var correct = Array (1, 2, 6, 4, 5, 3, 1, 1, 2); function array_unique(arr) { var tmp_arr = new Array(); for (i = 0; i < arr.length; i++) { if (tmp_arr.indexOf(arr) == "-1") { tmp_arr.push(arr); } } return tmp_arr; } alert(array_unique(correct).join(", ")); [/js] UPD: Блин ты меня сбил тегом javascript... нужно же на php... PHP: <?php $string = "12, 12, 14, 15, 16, 13, 13, 12, 14, 15"; $array = explode(",", $string); echo '<pre>'; print_r($array); /* Array ( [0] => 12 [1] => 12 [2] => 14 [3] => 15 [4] => 16 [5] => 13 [6] => 13 [7] => 12 [8] => 14 [9] => 15 ) */ $res = array_unique($array); print_r($res); /* Array ( [0] => 12 //довольно странно,такое же поведение и со строками [1] => 12 [2] => 14 [3] => 15 [4] => 16 [5] => 13 ) */ array_shift($res); print_r($res); /* Array ( [0] => 12 [1] => 14 [2] => 15 [3] => 16 [4] => 13 ) */ ?>
Сорри что ввел в заблуждение, но тут действительно PHP нужен... Kreker спасибо что обратили внимание на проблему, ато как будто об стенку, функция не срабатывает — а все в один голос утверждают что все четко! Притом с разными числами array_unique выдает даблы в разных местах... Если бы проблема была в первой цифре - давно бы уже обрезал...
Ничего странного, у тебя разделитель - запятая без пробела, поэтому пробел в начале каждого значения кроме первого (потому что первый находится вначале строки) остаётся. Тут надо либо поставить разделитель - запятую с пробелом, либо убрать пробелы в строке) Ambrella, если у тебя поле ввода, которое нужно разделить запятыми, то лучше используй preg_split, так как каждый по-разному ставит пробелы. Код (Text): <?php $string = '1, 2,3,3,4,1,2,3,4,4 , 5, 6, 3, 8, 9,10'; $array = implode(', ', array_unique(preg_split('~\s*,\s*~', $string))); echo $array; ?> Вывод Код (Text): 1, 2, 3, 4, 5, 6, 8, 9, 10