Хмм... если используешь arsort а не просто rsort то по идее должно выдавать нормальный порядковый номер
И потом - результат выводится как я бы хотел использовать порядковый номер каждого числа дальше в своих целях
Код (Text): <?php $numbers = "2|0|0|3|0|1|0|5|0|7|3|4|1|2|0|3|1"; $num_arr = explode("|", $numbers); rsort($num_arr); // $sorted_five = array_slice($num_arr, 0, 5); reset($sorted_five); while (list($key, $val) = each($sorted_five)) { echo "$key = $val\n"; } ?> Вы так решили. Тут нету arsort
А! понял! PHP: $sorted_five = array_slice($num_arr, 0, 5); сбрасывает ключи. Поэтому меняешь на PHP: $sorted_five = array_slice($num_arr, 0, 5[b], true[/b]);
Warning: Wrong parameter count for array_slice() in Warning: reset(): Passed variable is not an array or object in Warning: Variable passed to each() is not an array or object in Блин ! Доигрались!
вместо $sorted_five = array_slice($num_arr, 0, 5, true); попробуй PHP: while( sizeof($num_arr) > 5 ) array_pop( $num_arr); после чего или поменять все $sorted_five на $num_arr или извратиться и $sorted_five=$num_arr;
Adamant Извини, но не было времени читать весь топик. На электричку спешил. 1. Значит использовать первый вариант 2. Никто не мешает сделать break 3. Вставить функцию array_fill вместо $count = Array(); Да и вообще, у меня суммирование одинаковых чисел +)
Ладно, продолжаем развлекаться PHP: function array_slice_key($array, $offset, $len){ [b]$a=0;[/b] // добавлено, забыл совсем foreach ($array as $key => $value) { if ($a >= $offset && $a - $offset <= $length) $output_array[$key] = $value; $a++; } return $output_array; } И вместо array_slice используй array_slice_key
karakh дружище! Я рад что вы сдесь мне дурачку помогаете, но если вы будете писать отрывками кода, то я ничё не пойму!
вроде так PHP: <?php function array_slice_key($array, $offset, $len){ $a=0; foreach ($array as $key => $value) { if ($a >= $offset && $a - $offset <= $length) $output_array[$key] = $value; $a++; } return $output_array; } $numbers = "2|0|0|3|0|1|0|5|0|7|3|4|1|2|0|3|1"; $num_arr = explode("|", $numbers); arsort($num_arr); $sorted_five = array_slice_keys($num_arr, 0, 5); reset($sorted_five); while (list($key, $val) = each($sorted_five)) { echo "$key = $val\n"; } ?>
это я ошибся, название и вызов отличаются. Как-то не привык к людям, которые натыкаясь на этот еррор в куске кода на 20 строк не могут сами найти в чем дело...